【问题标题】:Creating a cumulative sum column创建累积总和列
【发布时间】:2011-12-22 14:11:03
【问题描述】:

示例表 ID:(num 是一个键,因此不会有任何重复)

num
1
5
6
8
2
3

我需要一个查询来做这个: 期望的输出: (应该是排序的,并且有一个累计和列)

num cumulative
1    1
2    3
3    6
5    11
6    17
8    25

在 Mysql 我有

Select num as n, 
       (select sum(num) from ID where num <= n)
from ID order by n;

我在 link 中选择了这个示例,但在 MySqlServer 中

【问题讨论】:

标签: sql-server sum


【解决方案1】:

试试这个:

SELECT num,(SELECT SUM(num) FROM tab WHERE num<=t.num) AS CumulativeSum
FROM tab t

【讨论】:

    【解决方案2】:

    由于 num 不是唯一的,您可能需要使用 row_number 来获取其中的唯一数字,然后求和:

    declare @t as table (num int)
    
    insert into @t (num) values (1)
    insert into @t (num) values (5)
    insert into @t (num) values (6)
    insert into @t (num) values (7)
    insert into @t (num) values (2)
    insert into @t (num) values (3)
    
    ;with rows as (
        select
            num,
            ROW_NUMBER() over (order by num) as Row
        from @t
    )
    select num, (select sum(num) from rows where row <= r.row)
    from rows r
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2018-01-16
      • 2019-02-15
      • 2018-07-02
      相关资源
      最近更新 更多