在保留所有行的同时,多行总和的SQL列



所以我有一个查询选择,它输出如下内容:(我正在处理的实际结果要复杂得多,但这些是重要的部分(

id   trans
123   5.00
124   6.00
124   7.00
125   8.00
125   9.00

我想创建这样的结果:

id   trans  total
123   5.00   5.00
124   6.00  13.00
124   7.00  13.00
125   8.00  17.00
125   9.00  17.00

基本上,我想添加一列,其中包含每个id的所有事务的总数,同时仍然显示所有事务。我认为这个解决方案与分组依据、嵌套选择和求和函数有关,但我做不好。

窗口函数适用于此场景:

select
*
,sum(trans) over(partition by id) as total
from
myTable

SqlFiddle示例

一般来说,您需要:

SUM(value) OVER (PARTITION BY group)

如果第一个输出来自:

SELECT id, SUM(col) AS trans
FROM table
GROUP BY id;

那么你需要这个:

SELECT id, SUM(col) AS trans, SUM(SUM(col)) OVER (PARTITION BY id) AS id_total
FROM table
GROUP BY id;

如果第一个输出来自:

SELECT id, trans
FROM table;

那么你需要这个:

SELECT id, trans, SUM(trans) OVER (PARTITION BY id) AS id_total
FROM table;

相关内容

  • 没有找到相关文章

最新更新