IPA公式正解:イ 150
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【イ】です。商品ランクが'A'の商品はS001, S002, S003の3件です。商品別売上実績表とLEFT OUTER JOINすると、売上合計金額はそれぞれ50, NULL, 250となります。AVG関数はNULL値を無視して集計するため、(50 + 250) ÷ 2 = 150となります。
【詳細解説】■ 本問の核心・解法のポイント
SQLの外部結合(LEFT OUTER JOIN)と集約関数AVGのNULL値の扱いの理解を問う問題です。
1. WHERE句「WHERE 商品ランク = 'A'」により、商品表からランクが'A'である商品(S001, S002, S003)の3行が対象となります。
2. 「FROM 商品 LEFT OUTER JOIN 商品別売上実績 ON 商品.商品コード = 商品別売上実績.商品コード」により外部結合を行います。
- S001:売上合計金額 = 50
- S002:売上実績がないため、売上合計金額 = NULL
- S003:売上合計金額 = 250
3. 「SELECT AVG(売上合計金額) ... GROUP BY 商品ランク」により、商品ランク'A'の売上合計金額の平均値を計算します。SQLの集約関数AVGはNULLの行を除外して計算するため、対象となる行数は2行(S001とS003)となり、(50 + 250) ÷ 2 = 300 ÷ 2 = 150となります。
・各選択肢の徹底解説:
・ア:100は、NULLを0として3行で割った場合の計算値((50 + 0 + 250) ÷ 3 = 100)ですが、SQL標準のAVG関数はNULLを無視するため誤りです。
・【選択肢イ★】:AVG関数はNULLを除外して計算するため、(50 + 250) ÷ 2 = 150となり正しい値です。
・ウ:225は、全売上実績の平均((50+250+350+450) ÷ 4 = 1100 ÷ 4 = 275)や他の計算の誤りです。
・エ:275は、売上別売上実績表の4行全体の平均値(1100 ÷ 4 = 275)であり、商品ランク'A'の絞り込みを考慮していません。
よって正解はイです。