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) ] は終了です。