本文へスキップ

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


Since 2016.4.19

平成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)


正解


解説

ア エラーになる。

イ 括弧内の要素が1つだけの場合に有効となるが、カッコ内の要素が複数になる場合、1つの商品コードが括弧内の全ての集合と一致し得ないので、在庫は0となる。

ウ 正しい。括弧内の要素と、商品コードが一致する場合のSQL 文にはを使用せず、IN を使用する。

エ 倉庫番号 = 'C003' AND 在庫数 >= 100 の条件に合致したものがあれば、EXISTS () は真を返すため、問題の条件にあった在庫数は求められない。

問28 目次 問30