本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和5年度 秋期 応用情報技術者試験問題と解説

問29

“製品”表と“在庫”表に対し、次のSQL文を実行した結果として得られる表の行数は幾つか。

SELECT DISTINCT 製品番号 FROM 製品
 WHERE NOT EXISTS (SELECT 製品番号 FROM 在庫
  WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号)

  製品
 ┌────┬────────┬───┐
 │製品番号│   製品名   │ 単価 │
 ┝━━━━┿━━━━━━━━┿━━━┥
 │ 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│
 └─────┴────┴───┘

ア 1  イ 2  ウ 3  エ 4 


正解


解説

DISTNCT は重複を削除するという意味の句である。

SQL文の意味は、以下のとおり。
SELECT DISTINCT 製品番号 FROM 製品
 WHERE NOT EXISTS (SELECT 製品番号 FROM 在庫
  WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号)

在庫数が30より多くかつ“製品”表の製品番号と“在庫”表の製品番号が同じ製品番号を“在庫”表から取り出しなさい。

この段階で、製品番号 CC5001, ZZ9000, AB1805, CC5001が取り出される。
さらに上記レコードに存在しないレコードを条件として
“製品”表から製品番号を重複なく取り出しなさい。

得られる結果は、MZ1000, XZ3000の2行である。

問28 目次 問30