IPA過去問ドリル

令和5年度 秋期 応用情報技術者試験 午前 問29

テクノロジ/データベース

“製品” 表と “在庫” 表に対し,次の SQL 文を実行した結果として得られる表の行数は幾つか。 SELECT DISTINCT 製品番号 FROM 製品 WHERE NOT EXISTS (SELECT 製品番号 FROM 在庫 WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号)

令和5年度 秋期 応用情報技術者試験 午前 問29の図

出典:令和5年度 秋期 応用情報技術者試験 午前 問29

正解:イ

解説

この SQL は「在庫数が30を超える在庫行が1件も存在しない製品番号」を求めます。在庫表を製品番号ごとに見ると,AB1805 は150,CC5001 は200,ZZ9900 は130 の行があるため除外されます。XZ3000 の在庫は30と20でどちらも「>30」を満たさず条件成立,MZ1000 は在庫表に行が1件もないため NOT EXISTS が成立します。よって結果は MZ1000 と XZ3000 の2行です。

選択肢ごとの解説

  • 誤り。在庫表に行がない MZ1000 も NOT EXISTS の条件を満たすため,1行ではありません。
  • 正しい。MZ1000(在庫行なし)と XZ3000(在庫数30以下のみ)の2行が得られます。
  • 誤り。在庫数30を超える行をもつ製品(AB1805 など)は結果に含まれないため,3行にはなりません。
  • 誤り。同様に4行にはなりません。「在庫数 > 30」は30ちょうどを含まない点にも注意が必要です。
応用情報技術者の過去問を演習モードで解く