MySQL的滚动SUM

问题描述:

比如我有以下表格MySQL的滚动SUM

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。而且我想知道两者之间是否存在测试这些查询的中间地带。

+0

您可以使用JOIN。 – Strawberry

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

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); 
+0

谢谢!它在两种情况下都能正常工作! –