MYSQL:使用 GROUP BY 增加行与行之间的值

标签 mysql group-by

我想逐月累加仪表值。我的数据如下所示:

| 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/

相关文章:

php - Laravel 5 在服务器上显示空白页面但在本地工作

mysql - 在现有 MYSQL 数据库中使用 Alter Table 添加外键时出现问题 - 无法添加!帮助!

r - 通过对 r 中的另一列进行分组来求 n 行的平均值

MySQL 按子字符串出现次数排序

mysql - 带 GROUP BY 和条件的 SQL 查询

mysql - 为每个唯一组设置 auto_increment 值

MySQL 数据库导入错误

mysql - "ADD AUTO_INCREMENT value"在 phpMyAdmin 中是什么意思

mysql - 如何在一列SQL中存储多个值

python - Pandas GroupBy 在自定义函数中使用两个 DataFrame 定义