平成19年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−26
2つの関係(表) 「商品表」と「生産者表」からなる関係データベースがあると
する。商品IDごとに、販売価格が仕入れ値よりも安い商品の中で最も高い
仕入れ値を表示させるSQL文が書かれている。  ア  イ  として最も
適切なものを@〜Dの中から選べ。ここで、販売価格と仕入れ値は数値
データ型とする。

       商品表            生産者表
┌───┬─────┬────┐┌────┬───┬────┐
│商品ID│商品名  │販売価格││生産者ID│商品ID│仕入れ値│
├───┼─────┼────┤├────┼───┼────┤
│ 1 │たまねぎ │ 100││ 1  │ 1 │  60│
├───┼─────┼────┤├────┼───┼────┤
│ 2 │ジャガイモ│  30││ 2  │ 1 │  70│
└───┴─────┴────┘├────┼───┼────┤
                │ 1  │ 2 │  37│
                ├────┼───┼────┤
                │ 2  │ 2 │  25│
                └────┴───┴────┘

 SELECT A.商品ID, MAX(A.仕入れ値)
  FROM 生産者表 AS A, 商品表 AS B
  WHERE A.商品ID = B.商品ID
   AND   ア  
   (SELECT DISTINCT C.商品ID
    FROM 生産者表 AS C, 商品表 AS D
    WHERE C.商品ID = D.商品ID AND
     C.仕入れ値 > D.販売価格)
     イ   ;

                  
 @ B.商品ID IN   HAVING A.商品ID
 A B.商品ID IN   GROUP BY A.商品ID
 B B.商品ID =   GROUP BY A.商品ID
 C B.商品ID =   HAVING A.商品ID
 D B.商品ID =   ORDER BY A.商品ID



【正解】 A

  ア  
SELECT ・・・ C.仕入れ値 > D.販売価格) のように
括弧の中で該当するものを選択する時には 
 は使用できず、
INを使う。
従って、   ア   には
B.商品ID IN が入る。

  イ   は選択したデータをグループ化するため、
GROUP BY A.商品ID が入る。

HAVING は 検索条件を指定する句である。

なお、
DISTINCT は、重複を削除するための句である。


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



W−25 目次 W−27
ファーストマクロ TOPページ