HAVING

HAVINGは、不要なグループを取り除くための条件を指定する。

7.2. テーブル式

postgresdb1=# SELECT * FROM profile;
  name  | address | age
--------+---------+-----
 Taro   | Tokyo   |  20
 Sato   | Tokyo   |  20
 Miki   | Tokyo   |  20
 Hanako | Tokyo   |  30
 Keiko  | Tokyo   |  30
 Jiro   | Osaka   |  20
 Sho    | Osaka   |  20
 Aya    | Osaka   |  20
 Ken    | Osaka   |  30
 Mai    | Osaka   |  30
 Saburo | Nagoya  |  20
 Rika   | Nagoya  |  20
 Goro   | Nagoya  |  30
 Yumi   | Nagoya  |  30
(14 行)

postgresdb1=# SELECT address, age, COUNT(*)  
FROM profile
GROUP BY address, age
HAVING COUNT(*) = 3;
 address | age | count
---------+-----+-------
 Osaka   |  20 |     3
 Tokyo   |  20 |     3
(2 行)

postgresdb1=#

addressとageの組み合わせでグループ化し、3人のグループだけを抽出している。