【问题标题】:MySQL Rolling SUMMySQL 滚动 SUM
【发布时间】:2017-10-09 11:46:53
【问题描述】:

例如我有下面的表格

 DATE       QUANTITY
9/10/2017     3
9/10/2016     5
9/03/2015     6
9/10/2017     2
8/10/2017     9

我希望最终输出如下所示

YEAR    MONTH   ROLLING SUM   SUM
2015     03          6         6
2016     10          11        5
2017     10          25        14

为了得到总和,我使用以下代码

SELECT YEAR(Date),MONTH(Date),SUM(QUANTITY) 
FROM table
GROUP BY YEAR(Date),MONTH(Date);

是否可以将汇总和添加到同一个查询中?

作为第二个说明: 目前我正在使用 MySQL,但这些查询将运行的最终环境是 AWS Athena。我想知道两者之间是否有中间立场来测试这些查询。

【问题讨论】:

  • 您可以使用 JOIN。

标签: mysql sql amazon-web-services rollup


【解决方案1】:

在大多数数据库中,您可以使用窗口函数:

SELECT YEAR(Date), MONTH(Date), SUM(QUANTITY),
       SUM(SUM(QUANTITY)) OVER (ORDER BY YEAR(DATE), MONTH(DATE) 
FROM table
GROUP BY YEAR(Date),MONTH(Date);

在 MySQL 中,我会推荐一个相关子查询:

SELECT YEAR(Date), MONTH(Date), SUM(QUANTITY),
       (SELECT SUM(t2.QUANTITY)
        FROM table t2
        WHERE YEAR(t2.Date) < YEAR(t.Date) OR
              (YEAR(t2.Date) = YEAR(t.Date) AND MONTH(t2.Date) <= MONTH(t.date))
       ) as rolling_sum
FROM table t
GROUP BY YEAR(Date), MONTH(Date);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2016-10-04
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多