| 製品番号 | 製品名 | 単価 |
|---|---|---|
| AB1805 | CD-ROM ドライブ | 15,000 |
| CC5001 | デジタルカメラ | 65,000 |
| MZ1000 | プリンタ A | 54,000 |
| XZ3000 | プリンタ B | 78,000 |
| ZZ9900 | イメージスキャナ | 98,000 |
| 倉庫コード | 製品番号 | 在庫数 |
|---|---|---|
| WH100 | AB1805 | 20 |
| WH100 | CC5001 | 200 |
| WH100 | ZZ9900 | 130 |
| WH101 | AB1805 | 150 |
| WH101 | XZ3000 | 30 |
| WH102 | XZ3000 | 20 |
| WH102 | ZZ9900 | 10 |
| WH103 | CC5001 | 40 |
“製品”表と“在庫”表に対し,次の SQL 文を実行した結果として得られる表の行数は幾つか。 SELECT DISTINCT 製品番号 FROM 製品 WHERE NOT EXISTS(SELECT 製品番号 FROM 在庫 WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号) 製品 在庫
イ. 2
相関副問合せとNOT EXISTSの意味を理解しているかを問う問題です。この SQL は,製品ごとに「在庫数が30を超える在庫が1件も存在しない(NOT EXISTS)」製品の製品番号を取り出します。各製品を確認すると,AB1805は在庫150(30),CC5001は200と40,ZZ9900は130があるため在庫数30超が存在し対象外です。一方MZ1000は在庫表に行が1件もなく,XZ3000は在庫30と20で30を超える行がないため,いずれもNOT EXISTSが成立して抽出されます。よって結果はMZ1000とXZ3000の2行となり正解はイです。在庫数30「超」なのでちょうど30のXZ3000の行は条件を満たさない点が判定の鍵です。
応用情報技術者試験 令和5年度秋期 午前 の過去問一覧へ戻る・問29