令和5年度秋期 応用情報技術者試験 午前 問29
“製品”表と“在庫”表に対し,次のSQL文を実行した結果として得られる表の行数は幾つか。 SELECT DISTINCT 製品番号 FROM 製品 WHERE NOT EXISTS (SELECT 製品番号 FROM 在庫 WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号)

- ア 1
- イ 2
- ウ 3
- エ 4
解答・解説を見る
正解:イ
AI解説
このSQL文は、“在庫”表の中に在庫数が30を超えるレコードが存在しない製品番号を、NOT EXISTSの相関副問合せによって“製品”表から抽出するものである。つまり、在庫数がすべて30以下(または在庫レコード自体がない)製品番号を求めており、該当する行数は2行になる。 ア: 1行では、条件に合致する製品番号を漏れなく数えられておらず、該当する行数と一致しない。 イ: 在庫数がすべて30以下(在庫レコードがない場合を含む)の製品番号を抽出した結果として2行が得られ、これが正解である。 ウ: 3行では条件に合致しない製品番号まで含めて数えてしまっており、NOT EXISTSの条件を満たす行数と一致しない。 エ: 4行はさらに多くの製品番号を含めてしまっており、在庫数30超のレコードが1件も無い製品番号という条件に合致しない。 💡 NOT EXISTS(相関副問合せ)は「外側の行に対応する内側の条件を満たす行が1件も無いものを残す」という意味であり、本問では「在庫数30超の記録が無い製品」を抽出している点を押さえるとよい。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。