如何在 MySQL 中对行进行求和
Posted
技术标签:
【中文标题】如何在 MySQL 中对行进行求和【英文标题】:How to perform SUM of rows in MySQL 【发布时间】:2012-11-14 17:51:12 【问题描述】:我有一张名为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;
请帮我解决这个问题。
【问题讨论】:
你不能做这个应用程序端吗?这在纯 SQL 中很难做到。 是的,我可以在应用程序端执行此操作,请您解释一下如何在应用程序端执行此操作 您的应用程序使用什么编程语言? 我的应用包括java,jsp和mysql @SaiSai 检查我的答案。它会做数据库方面,更有效。 【参考方案1】:我建议您在 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尝试过了。
【讨论】:
【参考方案2】: select id,sum(consumption) as total
from temp_reading
group by id;
建议你不要同ID
(1,1,1.2,2...)
【讨论】:
【参考方案3】:试试这个:
SELECT id, consumption, IF(@s=@s:=id, @s2:=@s2+consumption, @s2:=consumption) AS total
FROM temp_reading, (SELECT @s:=0, @s2:=0);
【讨论】:
以上是关于如何在 MySQL 中对行进行求和的主要内容,如果未能解决你的问题,请参考以下文章