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 ... 
随机推荐
- MySQL 中的日期时间类型
			日期时间类型中包含以下几种数据类型: DATE TIME DATETIME TIMESTAMP YEAR 各类型都有具体的取值范围,超出或非法的其他值时,MySQL 会回退到 0.TIMESTAMP ... 
- Windows 8.1 操作系统常用快捷键
			安装了 windows 8.1 有一段时间了,刚使用时有点儿不太习惯,后面知道了一些常用快捷键后,使用起来习惯多了.下面是一些常用的 Windows 8.1 快捷键: Ctrl + Tab: 访问所有 ... 
- [Codeforces995C]Leaving the Bar   瞎搞
			大致题意: 给出平面上n个向量,对于每个向量可以选择正的V或负的-V,求按照选择的向量走完,最后距离原点<=1.5*1e6的一个选择方案 非正解!!!!!!!!!! 先按距离原点距离由远到近贪心 ... 
- 洛谷P3457 [POI2007]POW-The Flood [并查集,模拟]
			题目传送门 pow 题意翻译 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是 ... 
- 折半搜索【p4799】[CEOI2015 Day2]世界冰球锦标赛
			Description 今年的世界冰球锦标赛在捷克举行.Bobek 已经抵达布拉格,他不是任何团队的粉丝,也没有时间观念.他只是单纯的想去看几场比赛.如果他有足够的钱,他会去看所有的比赛.不幸的是,他 ... 
- sql:将字符类型字段转换成数字并排序
			使用cast 函数可以把字符类型字段(数学形式)转换为数字 比如 AND m.nfrc_meeting_no=? ORDER BY cast(m.BOOTH AS INT) ASC "; 结 ... 
- 【51Nod 1238】最小公倍数之和 V3
			http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1238 设\(A(n)=\sum\limits_{i=1}^n\frac{ ... 
- bzoj 2056: gift? 高精度?
			2056: gift? 高精度? Time Limit: 10 Sec Memory Limit: 1 MB Description Input 输入的第一行为一个整数t. 接下来t行,每行包含 ... 
- 62.COUNT(递归算法)--数的划分变式题型
			文件名:count.cpp 输入输出文件:count.in.count.out 时空:64M,2s 我们已经知道这样一个定理:任意一个正整数能够分解成最多4个数字的平方和.现在给你一些数字,要你求出它 ... 
- python开发_python操作mysql数据库
			如果你还没有准备好开发环境,你不妨花上一小点时间去看看:python开发_mysqldb安装 本篇blog是有关python操作mysql数据的相关内容. 我做了一个demo: 先看运行效果: mys ... 
