当我执行以下 SQL 查询时:
select yr,
mn,
"%ind",
sum("%ind") OVER (order BY yr,mn) as "Sum%"
from table2
order by yr, mn;
结果是:
yr | mn | %ind | Sum%
------+----+--------------------+------------------
1996 | 2 | 18.1818181818182 | 18.1818181818182
1996 | 2 | 9.09090909090909 | 81.8181818181818
1996 | 2 | 9.09090909090909 | 90.9090909090909
1996 | 2 | 9.09090909090909 | 100
1996 | 3 | 12.1951219512195 | 112.19512195122
1996 | 3 | 31.0975609756098 | 143.292682926829
1996 | 3 | 0.609756097560976 | 199.390243902439
1996 | 3 | 0.609756097560976 | 200
1996 | 4 | 4.8780487804878 | 204.878048780488
1996 | 4 | 24.390243902439 | 268.29268292683
1996 | 4 | 14.6341463414634 | 298.780487804878
1996 | 4 | 1.21951219512195 | 300
这是一个问题,因为我想要做的是添加给定月份的 %ind 对应列的每一行,例如 1996-3。此外,一旦月份发生变化,我希望它重新从 0 添加到 100%。因此,理想的表将是:
yr | mn | %ind | Sum%
------+----+--------------------+------------------
1996 | 2 | 18.1818181818182 | 18.1818181818182
1996 | 2 | 9.09090909090909 | 81.8181818181818
1996 | 2 | 9.09090909090909 | 90.9090909090909
1996 | 2 | 9.09090909090909 | 100
1996 | 3 | 12.1951219512195 | 12.19512195122
1996 | 3 | 14.0243902439024 | 86.585365853659
1996 | 3 | 0.609756097560976 | 99.390243902439
1996 | 3 | 0.609756097560976 | 100
1996 | 4 | 4.8780487804878 | 4.878048780488
1996 | 4 | 15.8536585365854 | 84.146341463415
1996 | 4 | 14.6341463414634 | 98.780487804878
1996 | 4 | 1.21951219512195 | 100
我的 SQL 查询中缺少什么?