戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2015年 秋期 午前229


問題文

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

倉庫別商品在庫集計の在庫数合計を求めるSQL文【午前2 解説】

要点まとめ

  • 結論:複数の商品コードを対象にする場合は「IN句」を使い、該当商品の全在庫合計を正しく集計できる。
  • 根拠:「=」は単一値比較、「ALL」は全ての値と比較、「EXISTS」は存在確認で条件指定に不向き。
  • 差がつくポイント:複数行を返すサブクエリの扱いと、SQLの集合演算子の意味を正確に理解すること。

正解の理由

選択肢ウの「商品コード IN (SELECT 商品コード FROM 倉庫別商品在庫集計 WHERE 倉庫番号 = 'C003' AND 在庫数 >= 100)」は、倉庫番号'C003'で在庫数が100以上の複数の商品コードを抽出し、その商品コードに該当する全倉庫の在庫数を合計する条件として適切です。IN句は複数の値を対象にできるため、複数の商品コードを正しくフィルタリングできます。

よくある誤解

「=」は単一の値と比較するため、複数の商品コードがある場合はエラーや意図しない結果になることがあります。EXISTSは条件の真偽判定に使い、特定の値の絞り込みには不適切です。

解法ステップ

  1. 問題文から「倉庫番号'C003'で在庫数100以上の商品コード」を抽出する必要があると理解する。
  2. その商品コードは複数存在する可能性があるため、単一値比較の「=」は不適切と判断。
  3. 複数の値を対象にできる「IN句」を使うことを検討。
  4. 「ALL」は全ての値と比較するため、条件としては不適切。
  5. 「EXISTS」は存在確認であり、商品コードの絞り込みには使えない。
  6. 以上より「IN句」を使った選択肢ウが正解と判断。

選択肢別の誤答解説

  • ア: 「=」は単一値比較。複数の商品コードがある場合、エラーや不正確な結果になる。
  • イ: 「= ALL」は全ての値と比較するため、条件が厳しすぎて該当しない可能性が高い。
  • ウ: 複数の商品コードを正しく抽出し、全倉庫の在庫合計を求める条件として適切。
  • エ: 「EXISTS」はサブクエリの存在確認であり、商品コードの絞り込みには使えないため不適切。

補足コラム

SQLのサブクエリで複数行を返す場合、比較演算子「=」は使えません。複数の値を対象にする場合は「IN句」を使うのが基本です。また、「ALL」は全ての値に対して条件を満たすかを判定するため、複数行の比較には向きません。EXISTSはサブクエリの結果が存在するかどうかを判定するため、条件式としては使えますが、特定の値の絞り込みには適しません。

FAQ

Q: なぜ「=」ではなく「IN」を使うのですか?
A: 「=」は単一の値と比較するため、複数の値を返すサブクエリには使えずエラーになります。複数値の比較には「IN」が適切です。
Q: 「ALL」はどんな場合に使いますか?
A: 「ALL」は全ての値に対して条件を満たすかを判定する際に使いますが、複数値の絞り込みには向きません。
Q: 「EXISTS」はどういう時に使うべきですか?
A: 「EXISTS」はサブクエリの結果が存在するかどうかを判定するため、条件の有無を確認したい時に使います。

関連キーワード: SQL, サブクエリ、IN句、集合演算子、在庫管理、データベース
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について