【问题标题】:How to perform SUM of rows in MySQL如何在 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 检查我的答案。它会做数据库方面,更有效。

标签: mysql sql select sum


【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 2016-08-06
        • 2022-01-03
        • 2011-02-15
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多