ホーム > データベーススペシャリスト試験 > 2022年
データベーススペシャリスト試験 2022年 午前2 問07
“商品”と“商品別売上実績”表に対して, SQL文を実行して得られる売上平均金額はどれか。

ア:100
イ:150(正解)
ウ:225
エ:275
解説
“商品”と“商品別売上実績”表に対して, SQL文を実行して得られる売上平均金額はどれか。【午前2 解説】
要点まとめ
- 結論:商品ランクが'A'の商品の売上合計金額の平均は150である。
- 根拠:商品ランク'A'の対象はS001, S002, S003で、売上実績はS001=50、S003=250、S002はNULL(0扱い)となるため平均は(50+0+250)/3=100。
- 差がつくポイント:LEFT OUTER JOINで売上実績がない商品も含める点と、WHERE句で商品ランクを絞る点の理解が重要。
正解の理由
SQL文は「商品」表を基準に「商品別売上実績」表をLEFT OUTER JOINし、商品ランクが'A'の行だけを対象としています。
商品ランク'A'の3商品(S001, S002, S003)のうち、S002は売上実績がないためNULLとなりますが、LEFT OUTER JOINにより行は残ります。
AVG関数はNULLを除外して計算するため、売上合計金額は50(S001)と250(S003)の2件の平均、つまり(50+250)/2=150となります。
したがって、正解はイ: 150です。
商品ランク'A'の3商品(S001, S002, S003)のうち、S002は売上実績がないためNULLとなりますが、LEFT OUTER JOINにより行は残ります。
AVG関数はNULLを除外して計算するため、売上合計金額は50(S001)と250(S003)の2件の平均、つまり(50+250)/2=150となります。
したがって、正解はイ: 150です。
よくある誤解
LEFT OUTER JOINでNULLが含まれてもAVGはNULLを無視して計算するため、NULLを0として計算する誤解が多いです。
また、GROUP BYで1グループにまとめているため、複数行の平均を誤認することがあります。
また、GROUP BYで1グループにまとめているため、複数行の平均を誤認することがあります。
解法ステップ
- 商品ランクが'A'の商品の商品コードを抽出(S001, S002, S003)。
- 商品別売上実績表とLEFT OUTER JOINし、売上合計金額を結合。
- 売上実績がない商品(S002)はNULLとなる。
- WHERE句で商品ランク='A'を絞り込む。
- GROUP BY商品ランクで1グループにまとめる。
- AVG関数はNULLを除外して計算するため、売上合計金額の平均は(50+250)/2=150となる。
選択肢別の誤答解説
- ア: 100
売上実績がない商品を0と誤認し、(50+0+250)/3=100と計算した誤り。AVGはNULLを除外するため誤り。 - イ: 150
正解。NULLを除外し、売上実績がある2件の平均を正しく計算。 - ウ: 225
売上実績がある2件の合計(300)のうち1件だけを平均と誤認した可能性。 - エ: 275
売上実績がある商品の最大値や誤った計算結果。根拠がない。
補足コラム
LEFT OUTER JOINは左表の全行を保持し、右表に対応する行がなければNULLを補う結合です。
SQLのAVG関数はNULL値を自動的に除外して計算するため、NULLを0として計算しない点に注意が必要です。
GROUP BY句は集約関数と組み合わせてグループ単位の計算を行いますが、今回のように1グループのみの場合は単純な平均値となります。
SQLのAVG関数はNULL値を自動的に除外して計算するため、NULLを0として計算しない点に注意が必要です。
GROUP BY句は集約関数と組み合わせてグループ単位の計算を行いますが、今回のように1グループのみの場合は単純な平均値となります。
FAQ
Q: LEFT OUTER JOINでNULLが含まれる場合、AVG関数はどう計算しますか?
A: AVG関数はNULL値を除外して計算するため、NULLは平均値の計算に影響しません。
A: AVG関数はNULL値を除外して計算するため、NULLは平均値の計算に影響しません。
Q: WHERE句で商品ランクを指定すると、LEFT OUTER JOINの意味は変わりますか?
A: WHERE句は結合後の結果に条件をかけるため、LEFT OUTER JOINの結果から条件に合わない行を除外します。
A: WHERE句は結合後の結果に条件をかけるため、LEFT OUTER JOINの結果から条件に合わない行を除外します。
Q: GROUP BY句がある場合、AVGはどのように計算されますか?
A: GROUP BYでグループ化された各グループごとにAVGが計算されます。今回のように1グループなら全体の平均値です。
A: GROUP BYでグループ化された各グループごとにAVGが計算されます。今回のように1グループなら全体の平均値です。
関連キーワード: SQL, LEFT OUTER JOIN, AVG関数, 集約関数, NULL処理, GROUP BY, データベース, 売上分析