- トップページ
- 応用情報技術者
- 平成27年度秋季問題一覧
- 平成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) |
解答:ウ
<解説>
- 倉庫番号'C003'の倉庫で在庫数が100以上の商品」の在庫数の合計を求めるには、まず「倉庫番号'C003'の倉庫で在庫数が100以上の商品」の商品コードを特定するために,次のSQL文を用います。
SELECT商品コードFROM 倉庫別商品在庫集計 WHERE 倉庫番号='C003' AND 在庫数 >=100 - このSQL文で得た複数の商品コードのいずれかに一致する商品コードをもつ行だけを"倉庫別商品在庫集計表"から取り出し,商品コードことに在庫数
をSUM関数で集計して表示するので,前述のSQL文を副問合せとし,次のようなSQL文を用います。
※ 副問合せから複数の行が返ってくるので,IN句を 用います。
SELECT 商品コード,SUM(在庫数) AS 在庫合計 FROM 倉庫別商品在庫集計
WHERE 商品コード IN (SELECT 商品コード FROM 倉庫別商品在庫集計
WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
GROUP BY 商品コード
よって,ウが正解である。
お問い合わせ