2016-08-04 13 views
1

私はcolumn2から値の合計を取得する必要がありますが、idごとに1回計算する必要があります。私は必要下表のための例えば 5 + 10 + 7とない5 + 5 + 10 + 7Postgres一意のIDあたり1つの値の合計

id column1 column2 
1 value1 5 
1 value1 5 
2 value1 10 
3 value1 7 

後者を、私は次のクエリによって取得するが、私はそれを適応する方法がわかりません最初の合計を取得します。すべての個別の行を選択するように、事前にテーブルをフィルタリングする必要がありますか?

SELECT column1, sum(column2) FROM table group by column1; 
+2

'合計(個別のcolumn2の)' –

+0

あなたはIDの合計が必要な場合は、IDによるグループがすべき。 –

+0

しかし、与えられた 'id'に複数の異なる' column2'値があるとどうなりますか?どちらを集計するのですか?あなたの例では、どちらも '5'の値を持つので簡単です。しかし、もし彼らが違っていたら? – sstan

答えて

1

あなたは重複行を削除するために、あなたのデータをクリーンアップを検討してください。しかし、次のクエリでは、重複を削除するid, column1することにより、第1のグループによって、あなたが望む結果を得る必要があります。

select column1, sum(column2) 
    from (select id, column1, min(column2) as column2 
      from tbl 
     group by id, column1) t 
group by column1 
+0

サブクエリでmin(column2)の意義は何ですか? min()がなくても同じことをしないのですか? – user4658312

関連する問題