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。而且我想知道两者之间是否存在测试这些查询的中间地带。
答
在大多数数据库中,您可以使用窗口函数:
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
谢谢!它在两种情况下都能正常工作! –
您可以使用JOIN。 – Strawberry