| SELECT | JOB |
| FROM | EMP |
| GROUP BY | JOB |
| HAVING | AVG(SAL) >= 2500 |
HAVINGはGROUP BY句に対して抽出条件を設定することができます。WHERE条件がGROUP BYでグループ化される前のレコード抽出段階の条件になるのに対し、HAVINGはグループ化後の条件になります。
GROUP BY句の後ろに[ HAVING 条件式 ] と記述します。HAVING句に使用される条件は、グループごとに値を持たなくてはならないので、グループ化したキーか集合関数の比較条件を記述することが出来ます。
それでは実習です。2題出題します。
| 社員番号 | 氏 名 | 生年月日 | 所 属 |
| 0001 | 新井 健二 | 1950-02-04 | 営業部 |
| 0002 | 鈴木 太郎 | 1955-03-13 | 総務部 |
| 0003 | 佐藤 宏 | 1961-07-11 | 技術部 |
| 0004 | 田中 博 | 1958-01-24 | 企画部 |
| 0005 | 鈴木 太郎 | 1948-11-09 | 営業部 |
| ・・・ | |||
| ア | SELECT DISTINCT 氏名 FROM 社員 ORDER BY 氏名 |
| イ | SELECT 氏名 FROM 社員 GROUP BY 氏名 HAVING COUNT(*) > 1 |
| ウ | SELECT 氏名 FROM 社員 WHERE 氏名 > 1 |
| エ | SELECT 氏名 FROM 社員 WHERE 氏名 = 氏名 |
これで [ グループ化したテーブルの選択条件(HAVING) ] は終了です。