必ず受かる情報処理技術者試験

当サイトは、情報処理技術者試験に合格するためのWebサイトです。
ITパスポート試験,基本情報技術者,応用情報技術者,高度試験の過去問題と解答及び詳細な解説を掲載しています。
  1. トップページ
  2. 応用情報技術者
  3. 平成27年度秋季問題一覧
  4. 平成27年度秋季問題29-解答・解説-分析

平成27年度秋季問題

問題29

“倉庫別商品在庫集計”表から在庫数の合計を求めたい。
倉庫番号‘C003’の倉庫で在庫数が100以上の商品に対して、全ての倉庫における在庫数の合計を求めるSQL文の a に入る適切な字句はどれか。
ここで、該当する商品は複数存在するとともに在庫数が100未満の商品も存在するものとする。
また、実線の下線は主キーを表す。

倉庫別商品在庫集計(倉庫番号商品コード、在庫数)

[SQL文]
 SELECT 商品コード, SUM(在庫数) AS 在庫合計 FROM 倉庫別商品在庫集計
     WHERE   a  
     GROUP BY 商品コード

商品コード = (SELECT 商品コード FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
商品コード = ALL (SELECT 商品コード FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
商品コード IN (SELECT 商品コード FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
EXISTS (SELECT * FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)

“倉庫別商品在庫集計”表から在庫数の合計を求めたい。
倉庫番号‘C003’の倉庫で在庫数が100以上の商品に対して、全ての倉庫における在庫数の合計を求めるSQL文の a に入る適切な字句はどれか。
ここで、該当する商品は複数存在するとともに在庫数が100未満の商品も存在するものとする。
また、実線の下線は主キーを表す。

倉庫別商品在庫集計(倉庫番号商品コード、在庫数)

[SQL文]
 SELECT 商品コード, SUM(在庫数) AS 在庫合計 FROM 倉庫別商品在庫集計
     WHERE   a  
     GROUP BY 商品コード

商品コード = (SELECT 商品コード FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
商品コード = ALL (SELECT 商品コード FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
商品コード IN (SELECT 商品コード FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
EXISTS (SELECT * FROM 倉庫別商品在庫集計
          WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)

解答:ウ

<解説>

  1. 倉庫番号'C003'の倉庫で在庫数が100以上の商品」の在庫数の合計を求めるには、まず「倉庫番号'C003'の倉庫で在庫数が100以上の商品」の商品コードを特定するために,次のSQL文を用います。
    SELECT商品コードFROM 倉庫別商品在庫集計 WHERE 倉庫番号='C003' AND 在庫数 >=100
  2. このSQL文で得た複数の商品コードのいずれかに一致する商品コードをもつ行だけを"倉庫別商品在庫集計表"から取り出し,商品コードことに在庫数
    をSUM関数で集計して表示するので,前述のSQL文を副問合せとし,次のようなSQL文を用います。
    ※ 副問合せから複数の行が返ってくるので,IN句を 用います。
    SELECT 商品コード,SUM(在庫数) AS 在庫合計 FROM 倉庫別商品在庫集計
    WHERE 商品コード IN (SELECT 商品コード FROM 倉庫別商品在庫集計
                      WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
    GROUP BY 商品コード

よって,ウが正解である。