【问题标题】:How to sum in SQL increasingly by date?如何按日期越来越多地在 SQL 中求和?
【发布时间】:2017-09-18 23:00:45
【问题描述】:

我有一个包含日期和 int 值的 SQL 表,我想创建一个新列,其中这些 int 值的总和按日期递增。

例如,如果我有 [date1, date2, date3] 和 [1, 2, 3] 列,我想要一个带有 [1, 3, 6] 的新列。我该怎么做?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。同时提供样本数据和期望的结果。
  • 您正在使用 Wbich RDBMS?

标签: sql


【解决方案1】:

如果我理解正确,你会使用+

select col1 as newcol1, (col1 + col2) as newcol2, (col1 + col2 + col3) as newcol3
. . .

【讨论】:

    【解决方案2】:

    我想用这些 int 值的总和创建一个新列 按日期递增。

    您没有提及您使用的是什么RDBMS,但是如果您使用的是SQL Server或postegre,或者任何支持排名功能的数据库系统,那么您可以这样做:

    WITH CTE
    AS
    (
      SELECT [Date], id,
        row_number() over(order by date) as rn
      FROM table1
    ) 
    SELECT
      Date, id,
      (SELECT SUM(id) FROM CTE AS c2 WHERE c2.rn <= c1.rn ) AS Sum
    FROM CTE as c1;
    

    这会给你:

    |  Date | id | Sum |
    |-------|----|-----|
    | date1 |  1 |   1 |
    | date2 |  2 |   3 |
    | date3 |  3 |   6 |
    

    demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2021-05-05
      • 1970-01-01
      相关资源
      最近更新 更多