IPA過去問ドリル

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

テクノロジ/データベース

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

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

正解:エ

解説

SQL文はSELECT,FROM,WHERE,GROUP BY,HAVINGの順に記述する必要があります。WHERE句で役割名が'プログラマ'である行に絞り込んだ上でGROUP BYで部門名ごとに集約し,HAVING句でCOUNT(*)が3以上の部門に絞り込むことで,役割名がプログラマである社員が3人以上所属する部門の部門名が取得できます。GROUP BYより前にHAVINGを置く記述や,WHERE句にCOUNT(*)の条件を含める記述は,SQLの構文として誤りです。

選択肢ごとの解説

  • 誤り。GROUP BYより先にHAVING句を記述しており,また絞り込み条件であるWHERE句をGROUP BYの後に置いているため,構文として誤りです。
  • 誤り。WHERE句にCOUNT(*)の条件を記述していますが,集約関数はWHERE句では使用できず,構文として誤りです。
  • 誤り。WHERE句にCOUNT(*)の条件を記述していますが,集約関数はWHERE句では使用できず,構文として誤りです。
  • 正しい。WHERE句で役割名がプログラマである行に絞り込んだ後にGROUP BYで部門名ごとに集約し,HAVING句でCOUNT(*)>=3の条件を課すことで,目的の部門名を取得できます。
ITサービスマネージャの過去問を演習モードで解く