令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7
テクノロジ/データベース“商品”表と“商品別売上実績”表に対して,SQL 文を実行して得られる売上平均金額はどれか。 〔SQL 文〕 SELECT AVG(売上合計金額) AS 売上平均金額 FROM 商品 LEFT OUTER JOIN 商品別売上実績 ON 商品.商品コード = 商品別売上実績.商品コード WHERE 商品ランク = 'A' GROUP BY 商品ランク

出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7
- ア100
- イ150
- ウ225
- エ275
正解:イ
解説
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以外のデータを含めて平均を取るなど,条件を満たさない集計をした場合の値です。