3

というテーブルがあります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;

これを解決するのを手伝ってください。

4

3 に答える 3

4

Primary Keyテーブルにを追加することをお勧めしますtemp_reading(主キーの詳細を読む)このキーは行ごとに一意になります。次に、このクエリを試すことができます。

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;

SQLFiddleで試しました。

于 2012-11-27T08:01:31.550 に答える
1
     select id,sum(consumption) as total 
     from temp_reading 
     group by id;

私はあなたが同じものを持っていないことをお勧めしますID(1,1,1.2,2 ...)

于 2012-11-27T06:51:01.017 に答える
0

これを試して:

SELECT id, consumption, IF(@s=@s:=id, @s2:=@s2+consumption, @s2:=consumption) AS total
FROM temp_reading, (SELECT @s:=0, @s2:=0);
于 2012-11-27T06:44:47.243 に答える