平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
テクノロジ/データベース“社員”表に対して,SQL文を実行して得られる結果はどれか。ここで,社員コードが主キーであり,表中の'NULL'は値が存在しないことを表す。 社員 社員コード|上司|社員名 S001|NULL|A S002|S001|B S003|S001|C S004|S003|D S005|NULL|E S006|S005|F S007|S006|G 〔SQL文〕 SELECT 社員コード FROM 社員 X WHERE NOT EXISTS (SELECT * FROM 社員 Y WHERE X.社員コード = Y.上司) (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
- アS001,S003,S005,S006
- イS001,S005
- ウS002,S004,S007
- エS003,S006
正解:ウ
解説
このSQL文は,自分自身が誰かの“上司”として参照されていない社員コード,すなわち部下(自分の下に社員がいない社員)を取り出します。“上司”列に現れる値は S001,S001,S003,S005,S006 であり,これらの社員コードをもつ社員(S001,S003,S005,S006)は誰かの上司になっています。残るS002,S004,S007は誰の上司にもなっていないため,これらが検索結果になります。
選択肢ごとの解説
- ア誤り。この四つの社員コードは,いずれも他の社員の“上司”欄に現れる(すなわち部下をもつ)社員であり,NOT EXISTS条件を満たしません。
- イ誤り。S001,S005も他の社員の“上司”欄に現れており,部下をもつ社員なのでNOT EXISTS条件を満たしません。
- ウ正しい。S002,S004,S007はいずれも“上司”欄に一度も現れておらず,部下をもたない社員であるため,NOT EXISTS条件を満たし検索結果として取り出されます。
- エ誤り。S003,S006はいずれも他の社員の“上司”欄に現れており,部下をもつ社員なのでNOT EXISTS条件を満たしません。