Oracle 分析函数之聚集函数(MAX、MIN、AVG和SUM)
MAX 查找组中表达式的最大值 MAX(COL ) OVER ( [ <partition_by_clause> ] < order_by_clause > )
MIN 查找组中表达式的最小值 MIN(COL ) OVER ( [ <partition_by_clause> ] < order_by_clause > )
AVG 计算组中表达式的平均值 AVG(COL ) OVER ( [ <partition_by_clause> ] < order_by_clause > )
SUM 计算组中表达式的累积和 SUM(COL ) OVER ( [ <partition_by_clause> ] < order_by_clause > )
简单测试:
SQL> select deptno,
2 ename,
3 sal,
4 max(sal) over(partition by deptno order by sal) max_sal_asc,
5 max(sal) over(partition by deptno order by sal desc) max_sal_desc,
6 min(sal) over(partition by deptno order by sal) min_sal,
7 avg(sal) over(partition by deptno order by sal) avg_sal,
8 sum(sal) over(partition by deptno order by sal) sum_sal
9 from emp;
DEPTNO ENAME SAL MAX_SAL_ASC MAX_SAL_DESC MIN_SAL AVG_SAL SUM_SAL
---------- ---------- ---------- ----------- ------------ ---------- ---------- ----------
10 MILLER 1300 1300 5000 1300 1300 1300
10 CLARK 2450 2450 5000 1300 1875 3750
10 KING 5000 5000 5000 1300 2916.66667 8750
20 SMITH 800 800 3000 800 800 800
20 JONES 2975 2975 3000 800 1887.5 3775
20 FORD 3000 3000 3000 800 2258.33333 6775
30 JAMES 950 950 2850 950 950 950
30 WARD 1250 1250 2850 950 1150 3450
30 MARTIN 1250 1250 2850 950 1150 3450
30 TURNER 1500 1500 2850 950 1237.5 4950
30 ALLEN 1600 1600 2850 950 1310 6550
30 BLAKE 2850 2850 2850 950 1566.66667 9400
已选择12行。
上面例子说明:
max(sal) over(partition by deptno order by sal),当既有分组又有排序时,因为按sal升序,只要deptno和sal没有重复的行,每一行的sal都是该行的最大值;
如果是按sal降序排序,则第一行即为最大的行了,之后也以第一行作为max值了。
min(sal) over(partition by deptno order by sal),按升序排序,第一行已经是整个分组里最小的了,所以该分组内min值都为第一行的值;
avg(sal) over(partition by deptno order by sal),按排序顺序,每一行的avg,都为截止到当前行为止,该分组的avg值;
sum(sal) over(partition by deptno order by sal),按排序顺序,每一行的sum,都为截止到当前行为止,该分组的sum值。
Oracle 分析函数之聚集函数(MAX、MIN、AVG和SUM)的更多相关文章
- Oracle分析函数及常用函数: over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名
(1) 函数: over()的作用及用法: -- 分区(分组)求和. sum() over( partition by column1 order by column2 )主要用来对某个字 ...
- Oracle 分析函数及常用函数
什么叫分析函数(Analytic function)? Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组 ...
- oracle 分析函数和开窗函数
最近遇到一个需求,将查询出的数据按照地区分组,随机取出每个区域的2条数据,这里用到了oracle的分析和开窗函数: 最终写出的sql如下: select * from (select region,r ...
- 聚合函数 -AVG/MAX/MIN/STDDEV/VARIANCE/SUM/COUNT/MEDIAN
------------------------------------------聚合函数--------------------------------------------- --1: AVG ...
- GROUP BY 聚合函数(max min sum avg count) 和HAVING的 使用
重新复习一下这个都源自于我经常需要查的一个需求 “要找到表里面 出现了两次或者三次的某个字段” 现在假设有一张表字段是 +----+---------------------+------------ ...
- oracle中的常用函数
一.运算符算术运算符:+ - * / 可以在select 语句中使用连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != &l ...
- 【转】ORACLE日期时间 等函数大全
转自:ORACLE日期时间函数大全 ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: ...
- Oracle自定义聚集函数
今天工作中看见别人写的自定义聚集函数,所以一门心思的想搞懂,就在网上找资料了. 自定义聚集函数 自定义聚集函数接口简介 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG ...
- Oracle中碰到的函数和关键字收集
一.时间处理函数 trunc(sysdate) 返回日期 to_date() to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') to_number() 转为数字 二.字 ...
随机推荐
- js获取光标位置例子
<html><head><title>TEST</title><style>body,td { font-family: verdana, ...
- 数据导入问题:[Err] [Imp] 1406 - Data too long for column 'linkman' at row 20 [Err] [Imp] INSERT INTO `excel_eprinfo`
导入数据:提示错误 [Err] [Imp] 1406 - Data too long for column 'linkman' at row 20[Err] [Imp] INSERT INTO `ex ...
- PHP免费API调用,使用(CURL)
<?phpclass GetApiModel{//获取第三方API //获取身份证信息 //返回json /*{ "errNum": 0, "retMsg" ...
- 关于Git补丁文件交互
之前各个章节的版本库的交互都是通过 git push和git pull命令来实现的.这个是Git最主要的交互模式,但并不是全部. 使用补丁文件是另外一种交互方式,适用于参与者众多的大型项目进行的分布式 ...
- centos_Error: Protected multilib versions_解决方法
在yum命令后面加入忽略参数:--setopt=protected_multilib=false you can also use --setopt=protected_multilib=false ...
- C# 接口的隐式与显示实现【转】
以前在用到接口时,从来没注意到接口分为隐式实现与显示实现.昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习.通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的 ...
- Android屏幕适配-资源文件夹命名与匹配规则
说明:本文档目的为分析android工程res目录下的资源文件夹(drawable,values,layout等)在屏幕适配方面的限定与适配方法. 1. Res下文件夹命名方式 1. 可用的命名属性 ...
- cookie管理中的一些细节,转的
1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net.而跨域访问,如域A为t1 ...
- HashMap的一般用法以及遍历方法
private Map<Integer,String> selected = new HashMap<Integer,String>(); selected.put(key,v ...
- Response.Redirect("");Server.Transfer("")跳转页面的区别
Response.Redirect("") Server.Transfer("") 转向其他站点 能 不能(只能站内转向) 是否可带QueryString参 ...