HAVINGは、不要なグループを取り除くための条件を指定する。
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人のグループだけを抽出している。