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

令和4年度 秋期 午前Ⅱ 問12

データ操作

相関副問合せに関する問題

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

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

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

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

解説

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

男女それぞれの最年長社員は、同じ性別の中で生年月日が最も早い社員です。その社員を除くには、外側の社員 S1 ごとに、S1 と同じ性別の社員の中で最も早い生年月日を求め、S1 の生年月日がそれより後であれば取り出せばよいことになります。正解の字句は、副問合せの中で S1.性別 = S2.性別 という条件で S1 と同じ性別の社員だけに絞り、MIN(生年月日) を返します。外側の行ごとに副問合せが評価される相関副問合せなので、性別ごとに比べる相手が切り替わります。最年長社員の生年月日はこの値と等しいため、> の条件で除かれます。グループごとの基準と比べたいときは、副問合せの中で外側の列を参照して絞る、と覚えておくと見分けられます。

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

この問題の用語

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

同じ用語が出る問題

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