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

平成25年度 春期 午前Ⅱ 問5

データ操作

集約関数に関する問題

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

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

答えと解説を見る

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

解説

WHERE で絞ってから部門でまとめ、HAVING で人数を条件にします。

SELECT 文は、FROM、WHERE、GROUP BY、HAVING の順に書き、この順に評価されると考えて読みます。WHERE は行を一つずつ見て絞り込む句なので、まず役割名がプログラマである行だけを残します。次に GROUP BY 部門名で部門ごとにまとめ、HAVING COUNT(*) >= 3 でプログラマが3人以上いるグループだけを残します。COUNT(*) のような集約関数はグループに対して計算する値なので、WHERE には書けず HAVING に書きます。行の条件は WHERE、グループの条件は HAVING と分けて考えると、句の置き場所を間違えません。

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

この問題の用語

出典:平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5

同じ用語が出る問題

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