過去問解きまくり研究所 ホーム

令和6年度 秋期 午前Ⅱ 問10

データ操作

副問合せに関する問題

“従業員”表から,男女それぞれの最年長従業員を除く全ての従業員を取り出すSQL文とするために,aに入れる字句はどれか。ここで,“従業員”表の構造は次のとおりであり,実線の下線は主キーを表す。

従業員(従業員番号,従業員名,性別,生年月日)

〔SQL文〕

SELECT 従業員番号, 従業員名 FROM 従業員 AS S1
    WHERE 生年月日 > ([ a ])
答えと解説を見る

✓ これが正解ウSELECT MIN(生年月日) FROM 従業員 AS S2 WHERE S1.性別 = S2.性別

解説

同じ性別の中での最小の生年月日と比べる相関副問合せにします。

男女それぞれの最年長者を除くには、外側の各行 S1 について、その人と同じ性別の従業員の中で最も古い生年月日を求め、それより後に生まれた人だけを残せばよいのです。副問合せの WHERE に S1.性別 = S2.性別 を書くと、外側の行ごとに同じ性別の行だけが対象になり、MIN(生年月日) はその性別の最年長者の生年月日になります。生年月日がそれより大きい、つまり若い人だけが残るので、男女それぞれの最年長者が除かれます。外側の行の値を副問合せの中で使うこの形を相関副問合せと呼びます。見分ける軸は、副問合せが外側の行ごとに1つの値を返すかどうかです。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問10

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)