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

出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7
- ア100
- イ150
- ウ225
- エ275
正解:イ
解説
LEFT OUTER JOIN によって,商品ランクが A である S001,S002,S003 の全てが結果に残り,商品別売上実績表に対応する行がない S002 の売上合計金額は NULL になります。AVG 関数は NULL を計算対象から除外するため,S001 の 50 と S003 の 250 の平均である 150 が売上平均金額になります。
選択肢ごとの解説
- ア誤り。100 は,S002 の売上合計金額を 0 とみなして (50+0+250)÷3 のように計算した場合の値であり,AVG が NULL を除外して計算することを踏まえていません。
- イ正しい。商品ランクが A の商品のうち,商品別売上実績が存在する S001(50)と S003(250)の平均 (50+250)÷2=150 が売上平均金額になります。
- ウ誤り。225 は (50+250+350)÷3 のように,ランク A ではない S004 の実績を誤って含めて計算した場合などに相当し,WHERE 句によるランク A への絞り込みを踏まえていません。
- エ誤り。275 は (50+250+450)÷3 のように,ランク A ではない S006 の実績を誤って含めて計算した場合などに相当し,WHERE 句によるランク A への絞り込みを踏まえていません。