SkillStack
テクノロジ系8 / 25問

データベーススペシャリスト試験 令和4年度 秋期 午前II 問8

"社員"表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中のNULLは値が存在しないことを表す。

〔SQL文〕  SELECT 社員コード FROM 社員 X    WHERE NOT EXISTS      (SELECT * FROM 社員 Y WHERE X.社員コード = Y.上司)

データベーススペシャリスト試験 令和4年度 秋期 午前II 問8の図表

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】ウ

相関副問合せでは、外側の社員Xの社員コードが、別の社員Yの上司欄に存在するかを調べています。NOT EXISTSなので、その社員を上司とする行が一つも存在しない場合に、外側の社員が選ばれます。上司欄に現れる社員コードはS001、S003、S005、S006です。したがって、誰の上司にもなっていない社員はS002、S004、S007であり、この3行を示すウが正解です。

アのS001、S003、S005、S006は誤りです。これらは上司欄に一度以上現れる社員、つまり部下をもつ社員です。NOT EXISTSではなくEXISTSを用いた場合に対応する集合です。

イのS001、S005は誤りです。これらは自身の上司欄がNULLである社員、つまり最上位の社員です。今回の条件はX自身の上司の有無ではなく、Xを上司とするYの有無を判定しています。

エのS003、S006は誤りです。これらは自身にも上司がいて、かつ部下もいる中間の社員です。そのような二つの条件を指定するSQLではありません。

【ポイント】 相関副問合せでは、外側の行を一行ずつ代入して副問合せの成否を考えます。 EXISTSは該当行が一つでもあれば真、NOT EXISTSは該当行が一つもなければ真です。

出典:令和4年度 秋期 データベーススペシャリスト試験 午前II 問8
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める