平成25年度 春期 データベーススペシャリスト試験 午前II 問5
2025年6月30日
【問題5】
“社員”表から、役割名がプログラマである社員が3人以上所属している部門の部門名を取得するSQL文はどれか。ここで、実線の下線は主キーを表す。
【解説】
この問題では、役割名が“プログラマ”である社員に限定し、その人数が3人以上の部門を取得する必要があります。
1. WHERE句の位置:
データをフィルタリングする条件(役割名がプログラマ)は、`WHERE`句で指定します。これにより、カウントの対象がプログラマに限定されます。
2. GROUP BY句:
部門ごとにデータを集計するために`GROUP BY`句を使用します。
3. HAVING句:
グループ化した結果に対して、人数が3人以上という条件を`HAVING`句で指定します。
ア:
誤り。`HAVING`句の前に`WHERE`句を指定すべきですが、構文が誤っています。
イ:
誤り。`WHERE`句で集計関数`COUNT(*)`を使用するのは誤りです。`COUNT(*)`は`HAVING`句で使用するべきです。
ウ:
誤り。`HAVING`句で`役割名`を条件として指定していますが、これは`WHERE`句で行うべきです。
エ:
正しい。`WHERE`句で役割名がプログラマのデータをフィルタリングし、`GROUP BY`句で部門ごとに集計し、`HAVING`句で人数が3人以上の条件を指定しています。
【答え】
エ: 正しいSQL文。WHERE句で役割名がプログラマをフィルタリングし、GROUP BY句で部門ごとに集計、HAVING句で人数が3人以上の条件を指定。
出典:平成25年度 春期 データベーススペシャリスト試験 午前II 問5