oracle分析函数over的简单使用

Oracle over()函数的使用:
在阿里云中datawork的over函数用法与这个是一样的用法:
说在前面:over (partition by) 相当于groupby分组的用法,而且毕她的用法更加好用。

select deptno,ename,sal, 
sum(sal) over (order by ename) 连续求和,  
sum(sal) over () 总和, -- 此处sum(sal) over () 等同于sum(sal) 
100*round(sal/sum(sal) over (),4) 份额百分比
from emp ;

结果展示:(这个数据是自己编写的,可能和oracle实际的emp数据不一致)
在这里插入图片描述

现在进行代码含义的解释:

1,Oracle over()函数使用子分区查出各部门薪水的连续总和。
不同的over(。。。)的条件:,看下面的文字和图片:


A,sum(sal) over (partition by deptno order by ename):按部门“连续”求总和。
在这里插入图片描述


B,sum(sal) over (partition by deptno) :按部门求总和。
在这里插入图片描述


C,sum(sal) over (order by deptno,ename):先按部门排序,然后再按名字排序进行‘连续’求总和
在这里插入图片描述


D,sum(sal) over() 求所有员工薪资总和,相当于sum(sal)

猜你喜欢

转载自blog.csdn.net/qwertyuiop5rghar/article/details/84473890