oracle实现累加,累计百分比计算

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

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...