過去問解きまくり研究所 ホーム

平成30年度 秋期 午前Ⅱ 問21

データベース

SQL文

“社員”表から,役割名がプログラマである社員が3人以上所属している部門の部門名を取得するSQL文はどれか。ここで,実線の下線は主キーを表す。

社員(社員番号,部門名,社員名,役割名)

答えと解説を見る

✓ これが正解エ`SELECT 部門名 FROM 社員 WHERE 役割名 = 'プログラマ' GROUP BY 部門名 HAVING COUNT(*) >= 3`

解説

WHERE で行を絞り、部門で分けてから HAVING で3人以上を選びます。

SQL では、WHERE 句で表の行を絞り込み、GROUP BY 句でグループに分け、HAVING 句でグループ単位の条件を付けるという順序で処理が進みます。見分ける軸は、それぞれの条件が行単位の条件か、グループ単位の条件かです。役割名がプログラマであるという条件は一行ずつ判定できるので、WHERE 句に書きます。そのうえで部門名ごとにまとめ、COUNT(*) で数えた人数が3以上という条件はグループに対するものなので、HAVING 句に書きます。この順序どおりに書かれているのは、WHERE で役割名を絞り、GROUP BY で部門名ごとに分け、HAVING で COUNT(*) が3以上を指定した文です。集合関数を使った条件は WHERE 句に書けない、と覚えておくと誤った文を外せます。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成30年度 秋期 ITサービスマネージャ試験 午前Ⅱ 問21

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)