下記のようなデータがあり、sortの順番に並んでいます。
id,data,sort
----------
1,10,1
2,20,2
1,12,3
3,25,4
2,10,5
1,14,6
3,5,7
idの番号ごとにdataの数値を集計し、
idが最初に出現する行に、集計した数値を表示したいのですが、
どのように記述すれば、いいでしょうか?
id 1 の集計値は、10+12+14=36
id 2 の集計値は、20+10=30
id 3 の集計値は、25+5=30
id,data,sort,sum
----------
1,10,1,36
2,20,2,30
1,12,3
3,25,4,30
2,10,5
1,14,6
3,5,7
データはサンプルです。実際は、idは1から3までではなく、いくつあるか分かりません。
よろしくお願いいたします。
一例
-- サンプルデータ CREATE TEMPORARY TABLE T (id INT ,data INT, sort INT) ; INSERT INTO T VALUES (1,10,1) ,(2,20,2) ,(1,12,3) ,(3,25,4) ,(2,10,5) ,(1,14,6) ,(3,5,7) ; -- 集計 WITH v AS ( SELECT id, min(sort) sort, sum(data) "sum" FROM T GROUP BY id ) SELECT T.*, v.sum FROM T LEFT JOIN v USING(id, sort) ORDER BY T.sort ;
select id,data,sort,sum(data) from テーブル名 group by id;
select id,data,sort,sum(data) from テーブル名 group by id;
それのどこが質問文のような結果になりますか?
ポイント欲しさのいいかげん回答でないなら書き直しましょう。
id,data,sort,sum
----------
1,10,1,36
2,20,2,30
1,12,3
3,25,4,30
2,10,5
1,14,6
3,5,7
うまくいきました。ありがとうございました。
2013/03/18 10:59:30