IPA公式正解:イ 150
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【イ】です。LEFT OUTER JOINとWHERE句により、商品ランク'A'のS001(売上50)、S002(売上NULL)、S003(売上250)の3行が抽出されます。SQLの集計関数AVGはNULL値を除外して計算するため、(50+250)÷2=150となります。
【詳細解説】■ 本問の核心・解法のポイント
本問は左外部結合(LEFT OUTER JOIN)の動作と、集計関数AVGにおけるNULL値の扱いを正しく理解しているかを問う問題です。
解法のステップ:
1. 商品表から「商品ランク = 'A'」の行を抽出すると、商品コード「S001」「S002」「S003」の3行が対象となります。
2. これらに「商品別売上実績」表を左外部結合(LEFT OUTER JOIN)します。
・S001:売上合計金額 = 50
・S002:売上実績表に存在しないため売上合計金額 = NULL
・S003:売上合計金額 = 250
3. 集計関数AVG(売上合計金額)を適用します。SQLの集計関数(COUNT(*)を除く)は、対象列のNULL値を無視して集計を行います。
4. したがって、計算対象は50と250の2行となり、平均値は (50 + 250) / 2 = 150 となります。
・各選択肢の徹底解説:
・ア:NULLを0とみなして (50 + 0 + 250) / 3 = 100 と計算した誤りです。
・イ:【選択肢イ★】NULLを除外し、(50 + 250) / 2 = 150 と正しく計算されています。
・ウ:ランクA以外のデータも含めて誤って計算した値です。
・エ:商品別売上実績表の全レコードの平均値 (50 + 250 + 350 + 450) / 4 = 275 を求めた誤りです。
よって正解はイです。