平成26年度 春期 データベーススペシャリスト試験 午前II 問10
2025年6月30日
【問題10】
“社員" 表から、男女それぞれの最年長社員を除く全ての社員を取り出す SQL 文とするために、a に入る問合せはどれか。ここで、"社員" 表の構造は次のとおりであり、下線は主キーを表す。
【解説】
このSQL文の目的
SQL文の目的は、社員表から男女それぞれの最年長社員を除いた社員を取得することです。
ア: SELECT MIN(生年月日) FROM 社員 AS S2 GROUP BY S2.性別
誤り。このクエリは性別ごとに最小の生年月日を取得しますが、結果が複数行になるため > 演算子との比較には適していません。
イ: SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.生年月日 > S2.生年月日 OR S1.性別 = S2.性別
誤り。条件が適切でなく、最年長社員を正しく除外できません。
ウ: SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別 = S2.性別
正しい。この相関副問合せは、主問合せの各行に対して、同じ性別の中で最小の生年月日を取得します。これにより最年長社員を正しく特定し、それより生年月日が大きい社員を取得できます。
エ: SELECT MIN(生年月日) FROM 社員 GROUP BY S2.性別
誤り。S2 は定義されておらず、構文エラーとなります。
【答え】
ウ: SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別 = S2.性別
出典:平成26年度 春期 データベーススペシャリスト試験 午前II 問10