最近看到一篇文章来求占百分比的函数,感觉非常方便!在这里举出,供大家一起看看!
分析函数,这里就不多说了!
先看下小例子:
select deptno , sum(sal) ,
round(ratio_to_report( sum(sal) ) over() , 5)*100 || '%' percent_sum
from emp
group by deptno ;
结果:
大家可以看到,这里按照部门编号求总工资,后面的则是每个部门的总工资,占所有工资总和的百分比!
非常方便,不用再使用子查询嵌套了!
再看一个小例子:
select deptno , --sum(sal) ,
round(ratio_to_report( sal ) over(partition by deptno) , 5)*100 || '%' percent_deptno
from emp
order by deptno , sal ;
结果:
可以看出,这个是求每个员工的工资占他所在部门的总工资的百分比
总结:ratio_to_report() over() 第一个括号中就是分子,over() 括号中就是分母,
分母缺省就是整个占比
本文介绍了一种使用SQL中的ratio_to_report()函数简便地计算各组数据所占百分比的方法,包括整体占比及分组内占比,避免了复杂的子查询嵌套。
2017

被折叠的 条评论
为什么被折叠?



