同じ値のものはまとめて表示するには GROUP BY カラム名 を用います (参考:PostgreSQL 9.5.4文書 - 7.2.3. GROUP BY句とHAVING句、9.20. 集約関数)。
SELECT カラム名1 , カラム名2 FROM テーブル名 GROUP BY カラム名1
GROUP BY節で指定したカラムについては同じ値ものがグループ化されます。 その他のカラムについてはいずれかの集約関数を用いて集約する指定を行う必要があります。
例:
array_agg(カラム名) | 各カラム値を要素とする配列 | array_agg(a,b,c)→a,b,c |
avg(カラム名) | 各カラム値の平均値 | avg(1,2,3)→2 |
count(カラム名) | カラム値の件数 | count(a,b,c)→3 |
max(カラム名) | カラム値の中で最大の値 | max(1,2,3)→3 |
min(カラム名) | カラム値の中で最小の値 | min(1,2,3)→1 |
sum(カラム名) | カラム値の合計 | sum(1,2,3)→6 |
string_agg(カラム名,区切り文字) | 各カラム値を指定した区切り文字で結合した文字列 | string_agg((a,b,c),-)→a-b-c |