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),
即可得到预期结果,根据项目情况注意调整排序