令和4年度 秋期 データベーススペシャリスト試験 午前II 問12
2025年6月30日
【問題12】
“社員" 表から、男女それぞれの最年長社員を除く全ての社員を取り出す SQL 文とするために、a に入れる句はどれか。ここで、"社員" 表の構造は以下のとおりであり、実線の下線は主キーを表す。
【解説】
この問題の目的は、社員テーブルから男女それぞれの最年長社員を除き、他の社員情報を取得することです。最年長社員は「生年月日が最も早い社員」として特定されます。
正解の考え方
- 性別ごとに最年長の社員を特定するには
GROUP BY 性別 を用いて性別ごとにグループ化し、各グループで最も早い生年月日(最年長社員)を取得します。これは、MIN(生年月日) を使用することで実現します。
- 除外する条件
条件 生年月日 > (a) を満たす社員のみを選択します。
a には「性別ごとに最年長社員の生年月日」を返す相関サブクエリが必要です。
- 正しい選択肢
ウ: SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別 = S2.性別
他の選択肢の問題点
- ア: 性別ごとの最年長社員の生年月日を取得しますが、結果が複数行になるため、> 演算子との組み合わせでは適切ではありません。
- イ: 条件に余計な比較が含まれており、構文的にも不適切です。
- エ: GROUP BY の対象が不適切であり、正しいクエリとして動作しません。
【答え】
ウ: SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別 = S2.性別
出典:令和4年度 秋期 データベーススペシャリスト試験 午前II 問12