天天看點

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)