ホーム > 情報処理安全確保支援士試験 > 2025年 春期

情報処理安全確保支援士試験 2025年 春期 午前221


“従業員”表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中の NULL は値が存在しないことを表す。
問題画像選択肢画像
(正解)

解説

この問題では、従業員表に対して特定のSQL文を実行した場合に得られる結果を問われています。SQL文の動きと従業員表の構造を丁寧に理解することが合格のポイントです。

問題のSQL文の意味

SELECT 従業員コード FROM 従業員 X
    WHERE NOT EXISTS
    (SELECT * FROM 従業員 Y WHERE X.従業員コード = Y.上司)
このSQL文は、「従業員X」に対し、その従業員コードが「従業員Y」の上司として存在しない場合の従業員コードを抽出します。
  • 外側のテーブルは「従業員 X」
  • 内側のサブクエリは「従業員 Y」
  • 「X.従業員コード = Y.上司」という条件により、
    • 「XがYの上司である」ことを意味します。
  • NOT EXISTS
    • 「該当する Y がいない」つまり、「上司になっていない X」を示します。

つまり何を抽出しているか?

  • 上司として誰も部下を持っていない従業員コードを選んでいます。
  • 言い換えると「部下をもたない末端の従業員」です。

与えられた従業員表の構造

従業員コード上司従業員名
S001NULLA
S002S001B
S003S001C
S004S003D
S005NULLE
S006S005F
S007S006G
この表から、それぞれの従業員コードが上司として他に何人の部下を持っているかを確認します。

各従業員コードの部下の有無

  • S001 の部下は?
    • S002, S003 → 部下がいる
  • S002 の部下は?
    • いない
  • S003 の部下は?
    • S004 → 部下がいる
  • S004 の部下は?
    • いない
  • S005 の部下は?
    • S006 → 部下がいる
  • S006 の部下は?
    • S007 → 部下がいる
  • S007 の部下は?
    • いない

上司になっていない従業員(部下なし)

部下がいない従業員は、S002, S004, S007です。

したがって、SQL文の実行結果=部下のいない従業員コードリストは

{S002,S004,S007}\{ \text{S002}, \text{S004}, \text{S007} \}

選択肢との照合

問題の選択肢の中で、この3つの従業員コードが並んでいるのは「ウ」グループのみです。

まとめ

  • SQL文は「上司になっていない(部下のいない)従業員」を抽出します。
  • 表から確認した結果、部下なしは S002, S004, S007 です。
  • よって、正解は となります。
この問題を通じて、NOT EXISTS とサブクエリによる条件指定の用法や、テーブル自己結合の考え方を理解しておくことが重要です。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ