“倉庫別商品在庫集計”表から在庫数の合計を求めたい。倉庫番号‘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 |