加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 金华站长网 (https://www.0579zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle的分析函数over

发布时间:2021-01-11 08:23:38 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 参考地址:https://www.cnblogs.com/chinas/p/7058771.html?utm_source=itdadaoutm_medium=referral#_lab2_0_0 说明:聚合函数(如sum()、max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录。若想对于某组返回多行记

示例1:显示各部门员工的工资,并附带显示该部门的最高工资

SELECT E.DEPTNO,E.EMPNO,LAST_VALUE(E.SAL) OVER(PARTITION BY E.DEPTNO ORDER BY E.SAL  ROWS
       
  /*LAST_VALUE(E.SAL) OVER(PARTITION BY E.DEPTNO ORDER BY E.SAL ROWS*/
       --unbounded preceding and unbouned following针对当前所有记录的前一条、后一条记录,也就是表中的所有记录
       --unbounded:不受控制的,无限的
       --preceding:在...之前
       --following:在...之后
       -- ORACLE默认是升序
        BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) MAX_SAL
  FROM SCOTT.EMP E;

--或者

SELECT E.DEPTNO,
? ? ? ?E.EMPNO,
? ? ? ?E.ENAME,
? ? ? ?E.SAL,
? ? ? ?MAX(E.SAL) OVER(PARTITION BY E.DEPTNO )MAX_SAL
FROM SCOTT.EMP E;

结果:

oracle的分析函数over

示例2:对各部门进行分组,并附带显示第一行至当前行的汇总

SELECT E.DEPTNO,--注意ROWS BETWEEN unbounded preceding AND current row  是指第一行至当前行的汇总
       SUM(E.SAL) OVER(PARTITION BY E.DEPTNO ORDER BY E.ENAME ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW )MAX_SAL
  FROM SCOTT.EMP E;

结果:

oracle的分析函数over

示例3:当前行至最后一行的汇总

SELECT EMPNO,ENAME,DEPTNO,SAL,--注意ROWS BETWEEN current row AND unbounded following 指当前行到最后一行的汇总
       SUM(SAL) OVER(PARTITION BY DEPTNO 
                     ORDER BY ENAME 
                     ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) MAX_SAL
  FROM SCOTT.EMP;

结果:

oracle的分析函数over

(编辑:PHP编程网 - 金华站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!