IPA過去問ドリル

令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7

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

“商品”表と“商品別売上実績”表に対して,SQL 文を実行して得られる売上平均金額はどれか。 〔SQL 文〕 SELECT AVG(売上合計金額) AS 売上平均金額 FROM 商品 LEFT OUTER JOIN 商品別売上実績 ON 商品.商品コード = 商品別売上実績.商品コード WHERE 商品ランク = 'A' GROUP BY 商品ランク

令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7の図

出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7

正解:イ

解説

LEFT OUTER JOINにより商品ランクがAの商品S001,S002,S003は全て結果行として残りますが,S002は“商品別売上実績”表に対応行がないため売上合計金額はNULLになります。AVG関数はNULLを除外して集計するため,実際に平均を取るのはS001の50とS003の250の2件のみとなり,(50+250)÷2=150が売上平均金額です。

選択肢ごとの解説

  • 誤り。100は,NULLを0として扱うなど誤った計算をした場合に生じる値であり,AVG関数の正しい動作(NULLを除外して集計)による結果ではありません。
  • 正しい。LEFT OUTER JOINでランクAの3商品が残りますが,対応する売上実績がないS002はNULLとなり,AVGはNULLを除いてS001の50とS003の250の平均(50+250)÷2=150を返します。
  • 誤り。225は,商品ランクB,Cの売上実績まで含めて計算した場合などに生じる値であり,WHERE 商品ランク='A'で絞り込んだ結果とは一致しません。
  • 誤り。275は,ランクA以外のデータを含めて平均を取るなど,条件を満たさない集計をした場合の値です。
データベーススペシャリストの過去問を演習モードで解く