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() 转为数字 二.字 ...
随机推荐
- Eclipse插件-easy-explore-1.0.4
下载地址:http://sourceforge.net/projects/easystruts/files/Easy%20Explorer%20for%20Eclipse/easy-explore-1 ...
- 网页媒体播放利器 - JW Player使用心得
序言 前段时间在做一个网站项目,要求能在线播放视频.音乐,这个以前还真没接触过.恰好今天在坛子里闲逛时,发现有同志对这方面也感兴趣,遂把这些整理了下,同时自己也可以复习下. 播放器需要满足以下需求: ...
- Middleware
Middleware The middleware gives a single shot to the views associated into Controllers, before execu ...
- .Net 与 Java 的服务接口相互调用
本文介绍.Net 与 Java 相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 首先说 ...
- Java设计模式07:常用设计模式之装饰器模式(结构型模式)
1. Java之装饰器模式(Decorator Pattern) (1)概述: 装饰模式在Java种使用也很广泛,比如我们在重新定义按钮.对话框等时候,实际上已经在使用装饰模式了.在不必改变原 ...
- Spring-boot使用Ehcache配置
1.配置类 @Configuration @EnableCaching public class CacheConfiguration {// implements CachingConfigurer ...
- 我、实战nginx+naxsi(WAF)之一
差不多,一个星期多的时间都过去了.但是还是感觉时间过的太快,总是不禁的让人长叹一声,关于nginx和(naxsi)WAF这个问题,也算是只走出了第一步,在遇到了各种乱七八糟的错误之后总算是想要静下心来 ...
- 寻找对象在父元素下的index
方法一. window.onload=function(){ //寻找对象在父元素下的index function getIndexParent(element){ var ...
- 关于git fetch 和git pull 的区别
1.fetch 相当于是从远程获取最新版本呢到本地,不会自动merge. git fetch origin master:tmpgit diff tmp git merge tmp 2. git pu ...
- 关于Servlet的原理以及常用类
Servlet是JavaWeb的三大组件之一,它属于动态资源. 在Servlet中通常需要: 接收请求数据: 处理请求: 完成响应. 实现Servlet有三种方式: 实现javax.servlet.S ...