这几天一直在搞报表,发现Oracle真的很强大,需要用到累加功能,发现强大的oracle还真有,用over(order by field)解决的
例子:
数据表中最后一列就是累加的效果
累加sql:
select substr(hn.fd_sjsxsj_time,1,7) 日期,
sum(hn.fd_sh_workload) 工作量,
sum(sum(hn.fd_sh_workload)) over(order by substr(hn.fd_sjsxsj_time,7)) 累加
from tjstat.his_need hn
where substr(hn.fd_sjsxsj_time,4) = '2017'
group by substr(hn.fd_sjsxsj_time,7)
order by substr(hn.fd_sjsxsj_time,7);
趁热打铁,根据累计求和,进一步求占总和的百分比
例子:
sql:
思路:计算累计百分比,先求列和,然后嵌套求百分比
select t1.*,round(t1.accu_sum/t2.allsum*100,2)||'%' from (select substr(hn.fd_sjsxsj_time,
sum(hn.fd_sh_workload) 工作量,
sum(sum(hn.fd_sh_workload)) over(order by substr(hn.fd_sjsxsj_time,7)) accu_sum
from tjstat.his_need hn
where substr(hn.fd_sjsxsj_time,7))t1,(select sum(hn.fd_sh_workload) allsum from tjstat.his_need hn where substr(hn.fd_sjsxsj_time,4) = '2017') t2
原文地址:https://www.jb51.cc/oracle/208274.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。