gpt4 book ai didi

sql - 计算每个月的累积变化 - Postgres SQL 问题

转载 作者:行者123 更新时间:2023-11-29 13:33:46 24 4
gpt4 key购买 nike

当我执行以下 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 查询中缺少什么?

最佳答案

您需要将 partition by BY yr,mn 添加到窗口定义中。由于您没有定义分区(“组”),窗口函数对整个结果集进行操作:

此外,您必须找到另一列来定义对单个月的值的稳定排序。假设你有例如一个由序列生成的 ID 列,像这样的东西应该可以工作:

select yr,
mn,
"%ind",
sum("%ind") OVER (partition by yr,mn order by id) as "Sum%"
from table2
order by yr, mn;

这是一个 SQLFiddle 示例:http://sqlfiddle.com/#!12/33838/1

关于sql - 计算每个月的累积变化 - Postgres SQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17995724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com