【发布时间】:2022-01-20 22:50:05
【问题描述】:
我有兴趣根据组计算递减的累积总和,但是,我希望累积总和基于分组。换句话说,我希望一个组内的总和和组之间的累积和,group_id的顺序很重要。
例如,使用下面的示例数据:
group_id Value
1 5
1 5
1 5
2 5
2 2
2 4
3 1
3 2
3 3
我正在尝试获得以下信息:
group_id Value CumSum
3 1 6
3 2 6
3 3 6
2 5 17
2 2 17
2 4 17
1 5 32
1 5 32
1 5 32
我尝试使用分区,然后对 group_id 进行排序,但它似乎不起作用,我们将不胜感激。
CREATE TABLE data (group_id INT, value INT)
insert into data values
(1,5),
(1,5),
(1,5),
(2,5),
(2,2),
(2,4),
(3,1),
(3,2),
(3,3);
-- My Attempt:
select *, sum(value) over(partition by group_id order by group_id, value) as cum_sum
from data;
【问题讨论】:
-
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。
-
Teradata SQL Server - 为什么要同时标记这两个?
-
在您的示例结果中,您首先放置了第 3 组,然后是第 2 组,然后是第 1 组。这种排序重要吗?特别是因为第 1 组和第 3 组只是 碰巧 有相同的总和。
-
@DaleK 我对 Teradata 很感兴趣,但是我添加了 sql server,因为我希望我可以将它翻译成 Teradata。此外,我将更新问题,使其不包含图像。谢谢哟
-
@AaronBertrand 最终结果的排序是故意的。
标签: sql sql-server tsql teradata