IPA過去問ドリル

令和2年度 10月 応用情報技術者試験 午前 問29

テクノロジ/データベース

“東京在庫”表と“大阪在庫”表に対して,SQL 文を実行して得られる結果はどれか。ここで,実線の下線は主キーを表す。 〔東京在庫〕(商品コード,在庫数) ※商品コードが主キー A001,50 B002,25 C003,35 〔大阪在庫〕(商品コード,在庫数) ※商品コードが主キー B002,15 C003,35 D004,80 〔SQL 文〕 SELECT 商品コード,在庫数 FROM 東京在庫  UNION ALL SELECT 商品コード,在庫数 FROM 大阪在庫 (注:本サイトでは原問題の表を文字表記に変換しています)

出典:令和2年度 10月 応用情報技術者試験 午前 問29

正解:エ

解説

UNION ALL は,二つの問合せ結果を重複行を除去せずにそのまま連結します。したがって東京在庫の 3 行(A001 50,B002 25,C003 35)と大阪在庫の 3 行(B002 15,C003 35,D004 80)を合わせた 6 行がそのまま結果になります。

選択肢ごとの解説

  • 誤り。C003 の行が結果から欠けており,二つの表の行をすべて連結した UNION ALL の結果になっていません。
  • 誤り。同じ商品コードの在庫数を合計した結果で,UNION ALL ではなく GROUP BY と SUM による集計を行った場合に得られる表です。
  • 誤り。重複する C003 が 1 行にまとめられており,ALL を付けない UNION(重複行の排除)を実行した場合の結果です。
  • 正しい。重複行を排除せずに 3 行+3 行=6 行がそのまま得られます。
応用情報技術者の過去問を演習モードで解く