天天看点

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数据不一致)

oracle分析函数over的简单使用

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

1,Oracle over()函数使用子分区查出各部门薪水的连续总和。

不同的over(。。。)的条件:,看下面的文字和图片:

A,sum(sal) over (partition by deptno order by ename):按部门“连续”求总和。

oracle分析函数over的简单使用

B,sum(sal) over (partition by deptno) :按部门求总和。

oracle分析函数over的简单使用

C,sum(sal) over (order by deptno,ename):先按部门排序,然后再按名字排序进行‘连续’求总和

oracle分析函数over的简单使用

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