IPA公式正解:ウ SELECT MIN(生年月日) FROM 従業員 AS S2
WHERE S1.性別 = S2.性別
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【ウ】です。最年長者は「生年月日が最も古い(MIN(生年月日))」人です。男女それぞれの最年長を除くには、外側の行S1と同じ性別の中で最小の生年月日を取得し、それより生年月日が大きい(若い)人を条件とします。外側の行と性別を一致させる相関副問合わせを指定するウが正解です。
【詳細解説】■ 本問の核心・解法のポイント
本問は相関副問合わせ(相関サブクエリ)を用いた条件指定に関する問題です。
要件の整理:
1. 最年長従業員とは、「生年月日」の値が最小(最も古い)である従業員を指します。
2. 主問のWHERE句は `WHERE 生年月日 > ( a )` となっています。
3. 単一行比較演算子 `>` の右辺に副問合わせを置くため、副問合わせは必ず「単一の値(スカラ値)」を返さなければなりません。
4. 「男女それぞれの」最年長者と比較するためには、主問で走査中の従業員(S1)と同じ性別の従業員集合に絞り込み、その中での最小生年月日 `MIN(生年月日)` を返す相関副問合わせとする必要があります。
・各選択肢の徹底解説:
・ア:`GROUP BY S2.性別` により男女2行の結果(複数行)が返るため、単一値を期待する比較演算子 `>` でランタイムエラーとなります。
・イ:WHERE句の条件 `S1.生年月日 > S2.生年月日 OR S1.性別 = S2.性別` はロジックとして破綻しており、同性の最年長の生年月日を正しく取得できません。
・ウ:【選択肢ウ★】`WHERE S1.性別 = S2.性別` により、主問の従業員S1と同性のグループから最小の生年月日(最年長者の生年月日)を1件取得して比較できるため正解です。
・エ:表別名S2が定義されておらず構文エラーとなる上、GROUP BYにより複数行が返るため誤りです。
よって正解はウです。