这个问题已经有答案了:
Calculating Cumulative Sum in PostgreSQL(1个答案)
18天前关闭
假设我有一个名为values
的简单表:
ID day value
1 2023-09-21 37
2 2023-09-21 14
3 2023-09-22 42
4 2023-09-23 9
5 2023-09-23 10
6 2023-09-23 11
7 2023-09-24 14
8 2023-09-24 16
9 2023-09-25 6
10 2023-09-25 4
11 2023-09-26 17
12 2023-09-27 22
13 2023-09-28 31
14 2023-09-28 9
我想生成一个滚动3天的总和,即。过去3天的总计,每天。
所以最终的结果是:
day total
2023-09-21 51 (21st = 37+14)
2023-09-22 93 (21st + 42)
2023-09-23 123 (21st + 22nd + (9+10+11))
2023-09-24 102 (22nd + 23rd + (14+16))
2023-09-25 70 (23rd + 24th + (6+4))
2023-09-26 57 (24th + 25th + 17)
2023-09-27 49 (25th + 26th + 22)
2023-09-28 79 (26th + 27th + (31+9))
我可以很容易地计算出每天的总收入。
SELECT day, sum(value) as daily_total
FROM values
GROUP by day
ORDER BY day
这给了我:
day daily_total
2023-09-21 51
2023-09-22 42
2023-09-23 30
2023-09-24 30
2023-09-25 10
2023-09-26 17
2023-09-27 22
2023-09-28 40
我正在使用最新版本的PostgreSQL,无论我怎么尝试,我都无法获得移动/运行总数。我尝试过复制使用窗口函数和按范围分区的示例。我相信这会很简单,但它正在击败我的时刻。
1条答案
按热度按时间2mbi3lxu1#
你可以试试这个查询