平成20年 秋期 ソフトウェア開発技術者 午前 問66

“社員”表から、男女それぞれの最年長社員を除くすべての社員を取り出すSQL文とするために、aに入る副問合せはどれか。
ここで、“社員”表は次の構造とし、下線部は主キーを表す。

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

SELECT 社員番号, 社員名 FROM 社員 AS S1
           WHERE 生年月日 > (   a   )

 ア  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.性別


答え ウ


解説
この命題の解き方は、“社員”表から任意の2人を選択し、性別が同じ場合、年少の社員を取り出す処理を行うとできます。
ここで、問題のSQL文では“社員”表から一人の社員(S1)を選択し生年月日を比較しようとしているので、  a  に入るのは、もう一人の社員(S2)を選択し、S1と比較し年長の社員の生年月日を出力すれば良いので、そのSQL文は『S1とS2が同性のとき、年長の社員の生年月日を出力』になり
 SELECT MIN(生年月日) FROM 社員 AS S2
                  WHERE S1.性別=S2.性別

(ウ)になります。

※生年月日のデータの値が小さい方が年長になります。


キーワード
・SQL文

キーワードの解説

戻る 一覧へ 次へ