代码之家  ›  专栏  ›  技术社区  ›  showkey

如何将累计总和自下而上相加?

  •  0
  • showkey  · 技术社区  · 2 年前

    创建一个tmp表,从上到下添加num列:

    WITH data (num) AS (
      VALUES( 1),
            ( 5),
            ( 3)
    )
    SELECT num, sum(num) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
    FROM data;
    

    添加的所有数字:

     num | sum 
    -----+-----
       1 |   1
       5 |   6
       3 |   9
    

    如何从下到上添加所有num,例如:

     num | sum 
    -----+-----
       1 |   9
       5 |   8
       3 |   3
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Tim Biegeleisen    2 年前

    首先,需要有第二列来提供 排序 你似乎认为存在于你的桌子上。请注意,SQL表是基于无序的元组集的。

    WITH data (id, num) AS (
        VALUES ROW(1, 1),
               ROW(2, 5),
               ROW(3, 3)
    )
    
    SELECT num, SUM(num) OVER (ORDER BY id DESC) AS sum
    FROM data
    ORDER BY id;
    

    在这里,我们按相反的顺序取一个滚动和。

    Demo