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

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】イ
内側の副問合せは、外側で調べている製品と製品番号が同じで、在庫数が30を超える在庫行を探します。NOT EXISTSは、そのような行が一件も存在しないときに真になります。
製品ごとに判定すると、AB1805には在庫数150の行があるので除外されます。CC5001には200と40の行があるので除外されます。MZ1000には在庫行自体がないため条件を満たします。XZ3000の在庫数は30と20であり、「30以上」ではなく「30より大きい」という条件なので、該当行がなく条件を満たします。ZZ9900には130の行があるので除外されます。したがって、残る製品番号はMZ1000とXZ3000であり、行数は2です。
アの1行は誤りです。在庫行がないMZ1000だけでなく、在庫数が全て30以下のXZ3000も残ります。
ウの3行は誤りです。在庫数が30を超える行を一件でももつ製品は除外されるので、三つ目の製品は残りません。
エの4行も誤りです。AB1805、CC5001、ZZ9900の三製品が除外されます。
【ポイント】 ・NOT EXISTSは、副問合せの結果が0行なら真、1行以上なら偽になります。 ・相関副問合せでは、外側の行ごとに内側の条件を評価します。 ・境界値に注意し、「>30」は30を含まないことを確実に確認します。
出典:令和5年度 秋期 応用情報技術者試験 午前 問29
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる