2018年11月14日

平成30年度 技術士第一次試験問題 情報工学部門 V−24

V−24
次のSQL文を実行した結果として得られる結果はいくつか。ここで、表の
下線部は主キーを表す。

 SELECT DISTINCT 担当者
   FROM 発注書 AS AA
  WHERE NOT EXISTS
    (SELECT * FROM 発注書 AS BB
     WHERE AA.担当者 = BB.担当者
       AND BB.単価 < 500);

 “発注書”表
 ┌────┬────┬────┬────┐
 │発注番号│ 担当者 │商品ID│ 単価 │
 ├────┼────┼────┼────┤
 │  1  │ 斎藤 │  3  │ 500 │
 ├────┼────┼────┼────┤
 │  2  │ 斎藤 │  2  │ 600 │
 ├────┼────┼────┼────┤
 │  3  │ 斎藤 │  1  │ 500 │
 ├────┼────┼────┼────┤
 │  4  │ 山田 │  2  │ 600 │
 ├────┼────┼────┼────┤
 │  5  │ 山田 │  3  │ 400 │
 ├────┼────┼────┼────┤
 │  6  │ 鈴木 │  3  │ 500 │
 └────┴────┴────┴────┘

 @ 1  A 2  B 3  C 4  D 5



【正解】 A

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

SQL文の意味は、以下のとおり。
SELECT DISTINCT 担当者
  
 FROM 発注書 AS AA
  
WHERE NOT EXISTS
    
(SELECT * FROM 発注書 AS BB
     
WHERE AA.担当者 = BB.担当者
       AND BB.単価 < 500
);

発注書テーブルをAAとして読み替え、さらに
発注書テーブルをBBとして読み替え
AA表の担当者とBB表の担当者が同じで、BBの単価が500円のレコードを
BB表からすべて取り出す。

この段階で、発注番号 5番のレコードが取り出される。

さらに、
上記のレコードに存在しないレコードを条件として
AA表から、担当者を重複なく取り出しなさい。

得られる結果は、
齊藤
鈴木

2つである。

EXCELのマクロのご相談なら  ファーストマクロ  



タグ:SQL
posted by ファーストマクロ at 19:31| Comment(0) | H30技術士一次試験(情報工学)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: