mysql - 如何在 MySQL 中对行求和

标签 mysql sql select sum

我有一个名为 temp_reading 的表。它有以下列(消费是一个索引键):

id consumption total
1  100
1  200
1  300
1  400
2  50
2  100
3  200
4  250

现在我想将总数显示为

id   consumption  total
1    100          100
1    200          300
1    300          600
1    300          900
2    50           50
2    100          150
3    200          200
4    250          250

是否可以像上面那样显示?

我尝试了以下查询:

SELECT id,consumption,sum(consumption) as total 
FROM temp_reading 
GROUP BY consumption;

请帮我解决这个问题。

最佳答案

我建议您在temp_reading 表上添加一个Primary Key。 (阅读有关 Primary Keys 的更多信息)此键每行都是唯一的。然后你可以试试这个查询:

SELECT TR.id
  , TR.consumption
  , TR.consumption + IFNULL(SUM(TR2.consumption), 0) AS Total
  FROM temp_reading TR
  LEFT JOIN temp_reading TR2 ON TR.id = TR2.id AND TR.pk > TR2.pk
  GROUP BY TR.pk;

我在 SQL Fiddle 中试过了.

关于mysql - 如何在 MySQL 中对行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578640/

相关文章:

mysql - 如何查看用户最近10天内是否每天都登录?

MySQL。在连接值不存在的情况下使用连接进行选择

c# - Nhibernate 标准 : Use of Expression. in()

java - 不存在的 MySql 消息错误

sql - 如何在 Oracle SQL 查询中处理/使用百分比 (%) 和与号 (&) 等特殊字符

sql - @@IDENTITY 和并发

mysql - 为什么我们不应该让 innodb_log_files 的总大小超过 innodb_buffer_pool 的大小

mysql - 如何为 MySQL 中的每个不同项目选择随机结果

SQL Select 语法解决方法

mysql - 选择与相关表中的多行匹配的行