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)