人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PostgreSQLの記述方法について教えてください。

下記のようなデータがあり、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までではなく、いくつあるか分かりません。
よろしくお願いいたします。

●質問者: sunsunpapa
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●199ポイント

一例

-- サンプルデータ
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
;

sunsunpapaさんのコメント
うまくいきました。ありがとうございました。

2 ● oil999
●1ポイント
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
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ