【oracle】sum over函数遇到重复行不做逐行累计的问题(已解决)

sum ()over()累加

可以实现逐行累加,做帕累托图时,希望将概率进行逐行累加,

即新2行=1行+2行,新3行=1行+2行+3行。。。

缺陷:遇到相同的数值时会将这些相同的数值看做一个组,一次性累加上组内所有相同值的和,例:

有数据列1,1,2,2,2,3,3                   希望逐行累加结果为1,2,3,4,6,8,11,14

但是使用sum() over()仅能实现  2,2,8,8,8,14,14

实际项目如下:看到A_PERCENT列有重复值时,累加结果A4_PERCENT会将一组相同值的概率,如0.1111组,有两个,做0.5079+0.1111×2=0.7301

但是导致此两行数据一致,都为0.7301,期望中应该是一行0.6190,一行0.7301,这是因为

sum (A_PERCENT)over (order by A_PERCENT或者order by COUNT_REASON)

仅根据A_PERCENT或者 COUNT_REASON的值进行累计,有相同值时被默认归为一个类型。

解决办法:使用row_number over(order by A_PERCENT) as xuhao

先给这列数据不重复排序,得到序列1.2.3.4.5.6.7

再按照次序列做sum (要求和的列)over(order by 序列)运算即

sum (A_PERCENT)over (order by xuhao),

即可得到预期结果,根据项目情况注意调整排序

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值