oracle分析函式之ratio_to_report

lihy114發表於2013-11-05
ratio_to_report主要完成對百分比的計算,語法為
ratio_to_report(exp) over()
也就是根據over視窗函式的作用區間,求出作用區間中的單個值在整個區間的總值的比重
比如要求scott使用者下emp表中每個員工的工資佔本部門的比重
select ename,sal,deptno,ratio_to_report(sal) over(partition by deptno) ratio from emp;
需要注意的是:exp表示式不能進行ratio_to_report函式的巢狀,但是可以使用其他的函式;當sal的值乘以一個常數值的時候
並不影響最後的計算結果
比如select ename,sal,deptno,ratio_to_report(sal*100) over(partition by deptno) ratio from emp;的計算結果
和第一個sql的計算結果是一樣的
如果想以%的形式來表示的話,可以通過下面的語句來實現
select ename,sal,deptno,to_char(round(ratio*100,2))||'%' baifenbi from 
(select ename,sal,deptno,ratio_to_report(sal) over(partition by deptno) ratio from emp);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28803801/viewspace-775711/,如需轉載,請註明出處,否則將追究法律責任。

相關文章