我想逐月累加仪表值。我的数据如下所示:
| Date | Energy_produced |
--------------------------------
| 2011-01-01 | 12 |
| 2017-01-02 | 23 |
| 2017-01-03 | 25 |
...
| 2011-02-01 | 11 |
| 2017-02-02 | 12 |
| 2017-02-03 | 17 |
GROUP BY 会得出每个月“Energy_ Produced”值的总和,但我希望将总和相加得到:
| Month | Energy_produced_added_up |
--------------------------------------
| 2011-01 | 60 |
| 2017-02 | 100 |
我阅读了很多文章并了解我可以使用变量:
set @result := 0;
SELECT
DATE_FORMAT(t.Datum_Maand, '%m') AS measurement_month,
DATE_FORMAT(t.Datum_Maand, '%Y') AS measurement_year,
(@result := @result + SUM(t.Geg_Maand)) AS SUMME
FROM tgeg_maand AS t
GROUP BY measurement_year, measurement_month
ORDER BY measurement_year, measurement_month
使用 GROUP BY 时,该值不会相加。上面的语句显示的结果相同:
SELECT
DATE_FORMAT(t.Datum_Maand, '%m') AS measurement_month,
DATE_FORMAT(t.Datum_Maand, '%Y') AS measurement_year,
SUM(t.Geg_Maand) AS SUMME
FROM tgeg_maand AS t
GROUP BY measurement_year, measurement_month
ORDER BY measurement_year, measurement_month
我做错了什么?
谢谢
最佳答案
您需要先按月进行求和,然后再将每月的值求和。为此,您需要将原始查询变成子查询:
set @result := 0;
SELECT measurement_month, measurement_year,
@result := @result + monthly_sum AS SUMME
FROM (SELECT DATE_FORMAT(t.Datum_Maand, '%m') AS measurement_month,
DATE_FORMAT(t.Datum_Maand, '%Y') AS measurement_year,
SUM(t.Geg_Maand) AS monthly_sum
FROM tgeg_maand AS t
GROUP BY measurement_year, measurement_month) mm
ORDER BY measurement_year, measurement_month
关于MYSQL:使用 GROUP BY 增加行与行之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53261206/