oracle分析函数之windowing_clause--rows
Some analytic functions allow the windowing_clause. In the listing of analytic functions at the end of this section, the functions that allow the windowing_clause are followed by an asterisk (*)。--有些分析函数允许windowing_clause,在附录中,带*号的分析函数可以用windowing_clause,可以看到很多是聚合函数。
rows代表物理行,range代表逻辑偏移,我们来做下试验rows:
--unbounded preceding and unbouned following针对当前所有记录的前一条、后一条记录,也就是表中的所有记录
--unbounded:不受控制的,无限的
--preceding:在...之前
--following:在...之后
SELECT E.DEPTNO,
E.EMPNO,
E.ENAME,
E.SAL,
LAST_VALUE(E.SAL)
OVER(PARTITION BY E.DEPTNO
ORDER BY E.SAL
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) MAX_SAL
FROM EMP E;
DEPTNO EMPNO ENAME SAL MAX_SAL
---------- ---------- ---------- ---------- ----------
10 7934 MILLER 1300 5000
10 7782 CLARK 2450 5000
10 7839 KING 5000 5000
20 7369 SMITH 800 3000
20 7876 ADAMS 1100 3000
20 7566 JONES 2975 3000
20 7788 SCOTT 3000 3000
20 7902 FORD 3000 3000
30 7900 JAMES 950 2850
30 7654 MARTIN 1250 2850
30 7521 WARD 1250 2850
30 7844 TURNER 1500 2850
30 7499 ALLEN 1600 2850
30 7698 BLAKE 2850 2850
--ROWS BETWEEN unbounded preceding AND current row 是指第一行至当前行的汇总
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
SUM(SAL) OVER(PARTITION BY DEPTNO ORDER BY ENAME ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) max_sal
FROM EMP;
EMPNO ENAME DEPTNO SAL MAX_SAL
---------- ---------- ---------- ---------- ----------
7782 CLARK 10 2450 2450
7839 KING 10 5000 7450
7934 MILLER 10 1300 8750
7876 ADAMS 20 1100 1100
7902 FORD 20 3000 4100
7566 JONES 20 2975 7075
7788 SCOTT 20 3000 10075
7369 SMITH 20 800 10875
7499 ALLEN 30 1600 1600
7698 BLAKE 30 2850 4450
7900 JAMES 30 950 5400
7654 MARTIN 30 1250 6650
7844 TURNER 30 1500 8150
7521 WARD 30 1250 9400
--ROWS BETWEEN current row AND unbounded following 指当前行到最后一行的汇总
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) max_sal
FROM EMP;
EMPNO ENAME DEPTNO SAL MAX_SAL
------ ---------- ---------- ---------- ----------
7782 CLARK 10 2450 8750
7839 KING 10 5000 6300
7934 MILLER 10 1300 1300
7876 ADAMS 20 1100 10875
7902 FORD 20 3000 9775
7566 JONES 20 2975 6775
7788 SCOTT 20 3000 3800
7369 SMITH 20 800 800
7499 ALLEN 30 1600 9400
7698 BLAKE 30 2850 7800
7900 JAMES 30 950 4950
7654 MARTIN 30 1250 4000
7844 TURNER 30 1500 2750
7521 WARD 30 1250 1250
--注意ROWS BETWEEN 1 preceding AND current row 是指当前行的上一行(rownum-1)到当前行的汇总
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME ROWS
BETWEEN 1 PRECEDING AND CURRENT ROW) max_sal
FROM EMP;
EMPNO ENAME DEPTNO SAL MAX_SAL
------ ---------- ---------- ---------- ----------
7782 CLARK 10 2450 2450
7839 KING 10 5000 7450
7934 MILLER 10 1300 6300
7876 ADAMS 20 1100 1100
7902 FORD 20 3000 4100
7566 JONES 20 2975 5975
7788 SCOTT 20 3000 5975
7369 SMITH 20 800 3800
7499 ALLEN 30 1600 1600
7698 BLAKE 30 2850 4450
7900 JAMES 30 950 3800
7654 MARTIN 30 1250 2200
7844 TURNER 30 1500 2750
7521 WARD 30 1250 2750
--注意ROWS BETWEEN 1 preceding AND 1 following 是指当前行的上一行(rownum-1)到当前行的下两行(rownum+2)的汇总
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME
ROWS BETWEEN 1 PRECEDING AND 2 FOLLOWING) max_sal
FROM EMP;
EMPNO ENAME DEPTNO SAL MAX_SAL
------ ---------- ---------- ---------- ----------
7782 CLARK 10 2450 8750
7839 KING 10 5000 8750
7934 MILLER 10 1300 6300
7876 ADAMS 20 1100 7075
7902 FORD 20 3000 10075
7566 JONES 20 2975 9775
7788 SCOTT 20 3000 6775
7369 SMITH 20 800 3800
7499 ALLEN 30 1600 5400
7698 BLAKE 30 2850 6650
7900 JAMES 30 950 6550
7654 MARTIN 30 1250 4950
7844 TURNER 30 1500 4000
7521 WARD 30 1250 2750
--注意ROWS BETWEEN 1 preceding AND 1 following 是指当前行的上一行(rownum-1)到当前行的下两行(rownum+1)的汇总
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) max_sal
FROM EMP;
EMPNO ENAME DEPTNO SAL MAX_SAL
------ ---------- ---------- ---------- ----------
7782 CLARK 10 2450 7450
7839 KING 10 5000 8750
7934 MILLER 10 1300 6300
7876 ADAMS 20 1100 4100
7902 FORD 20 3000 7075
7566 JONES 20 2975 8975
7788 SCOTT 20 3000 6775
7369 SMITH 20 800 3800
7499 ALLEN 30 1600 4450
7698 BLAKE 30 2850 5400
7900 JAMES 30 950 5050
7654 MARTIN 30 1250 3700
7844 TURNER 30 1500 4000
7521 WARD 30 1250 2750
附录:
AVG *
CORR *
COVAR_POP *
COVAR_SAMP *
COUNT *
CUME_DIST
DENSE_RANK
FIRST
FIRST_VALUE *
LAG
LAST
LAST_VALUE *
LEAD
MAX *
MIN *
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
RATIO_TO_REPORT
REGR_ (Linear Regression) Functions *
ROW_NUMBER
STDDEV *
STDDEV_POP *
STDDEV_SAMP *
SUM *
VAR_POP *
VAR_SAMP *
VARIANCE *
oracle分析函数之windowing_clause--rows的更多相关文章
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- [转]oracle分析函数Rank, Dense_rank, row_number
oracle分析函数Rank, Dense_rank, row_number 分析函数2(Rank, Dense_rank, row_number) 目录 ==================== ...
- [转]oracle 分析函数over
oracle 分析函数over 分析函数(OVER) 目录: =============================================== 1.Oracle分析函数简介 2. O ...
- oracle分析函数与over()(转)
文章参考:http://blog.csdn.net/haiross/article/details/15336313 -- Oracle分析函数入门-- 分析函数是什么? 分析函数是Oracle专门用 ...
- oracle分析函数技术详解(配上开窗函数over())
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- Oracle分析函数大全
分析函数又叫开窗函数,OLAP函数等,因为有人问我用过开窗函数没,呵,什么是开窗函数,从来没听过,难道是分析函数么.哈哈,最后还真是分析函数哦!用过的东西别名也应该知道,赶上这么个事,就剽窃一眼Ora ...
- Oracle分析函数Over()
一.Over()分析函数 说明:聚合函数(如sum().max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录.若想对于某组返回多行记录,则需要使用分析函数. 1.rank( ...
- Oracle分析函数巧妙使用
在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...
- Oracle分析函数(一)
(一)分析函数语法 function_name(<argument>,<argument>...) over(<partition by clause><or ...
随机推荐
- 【LOJ】#2007. 「SCOI2015」国旗计划
题解 考虑朴素的做法,断环为链,复制2M个,找到一个位置i,f(i)是这个位置之前开始的线段,结束位置最远的位置在哪 然后对于每一个人,从自己线段的起点往下跳,跳到起点+M或以后的步数就是答案 我们发 ...
- “裕同集团&易普优APS项目启动大会”顺利召开
“裕同集团&易普优APS项目启动大会”顺利召开 ——易普优APS助力裕同集团实现精益生产 2017年7月05日,“裕同集团&易普优APS项目启动大会”顺利召开,裕同集团高级王副总裁.I ...
- Java Programs
Java Programs Fibonacci series in Java public class FibonacciExample { public static void main(Strin ...
- cordova 整合 webpack vue
cordova 是hybrid开发app的一个框架,通过js桥接原生api实现了js调用原生的一些功能:本打算学习下阿里的weex:可是一直打包不了,加上之前也用过cordova,打算使用cordov ...
- 表A中一条记录的两个字段都对应于表B的同一个字段 如何查询?SQL, thinkphp[5]
表 A=approval_order, B=admin, 表A中technician_username, salesman_username 都是id号,中文名保存在admin表的nickname ...
- VideoView视频缓冲进度条
效果图: 需求: 刚进入视频播放页时,屏幕中间有加载进度条 视频播放过程中,视频界面不动了,正在缓冲时,屏幕中间有加载进度条 private ObjectAnimator rotate; ImageV ...
- 洛谷P2680 运输计划 [LCA,树上差分,二分答案]
题目传送门 运输计划 Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n?1 条双向航道,每条航道建立在两个星球之间, 这 n?1 条航道连通了 L 国的所 ...
- [ZROI 9.16模拟赛] Tutorial
Link: 传送门 A: 套路题结果想了好久…… 排序二叉树的性质就是中序遍历单调递增 于是只考虑当前树的中序遍历的序列即可,与树的形态无关 将序列改成严格单调增想到最大化不变的数,但直接LIS求的是 ...
- ROS知识(6)----基于Eclipse开发
可以利用Eclipse集成开发环境进行ROS开发,从而提高研发效率.以色列巴尔伊兰大学的Mr. Roi Yehoshua开设了一门ROS课程,课程2( Lesson 2)讲解了如何利用Eclipse在 ...
- CentOS6 下编译安装 MySQL 5.6.26
CentOS6下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.26. 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | ...