oracle实现累加,累计百分比计算
oracle实现累加,累计百分比计算
铂金小猴 发表于9个月前
oracle实现累加,累计百分比计算
  • 发表于 9个月前
  • 阅读 16
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

这几天一直在搞报表,发现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,1,7)) 累加

from tjstat.his_need hn

where substr(hn.fd_sjsxsj_time,1,4) = '2017'

group by substr(hn.fd_sjsxsj_time,1,7)

order by substr(hn.fd_sjsxsj_time,1,7);

 

趁热打铁,根据累计求和,进一步求占总和的百分比

例子:

​sql:

思路:计算累计百分比,先求列和,然后嵌套求百分比

select t1.*,round(t1.accu_sum/t2.allsum*100,2)||'%' from (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,1,7)) accu_sum

from tjstat.his_need hn

where substr(hn.fd_sjsxsj_time,1,4) = '2017'

group by substr(hn.fd_sjsxsj_time,1,7)

order by substr(hn.fd_sjsxsj_time,1,7))t1,(select sum(hn.fd_sh_workload) allsum from tjstat.his_need hn where substr(hn.fd_sjsxsj_time,1,4) = '2017') t2

标签: Oracle
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 17
博文 41
码字总数 6785
×
铂金小猴
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: