令和6年度 秋期 データベーススペシャリスト試験 午前II 問7

“商品”表と“商品別売上実績”表に対して,SQL文を実行して得られる売上平均金額はどれか。

商品
図の説明テキスト
商品コード 商品名 商品ランク
S001 PPP A
S002 QQQ A
S003 RRR A
S004 SSS B
S005 TTT C
S006 UUU C
商品別売上実績
図の説明テキスト
商品コード 売上合計金額
S001 50
S003 250
S004 350
S006 450
〔SQL 文〕
図の説明テキスト

SELECT AVG(売上合計金額) AS 売上平均金額
FROM 商品 LEFT OUTER JOIN 商品別売上実績
ON 商品.商品コード = 商品別売上実績.商品コード
WHERE 商品ランク = 'A'

解答・解説

正解: イ. 150

本問は、関係データベースにおける表の結合(JOIN)と集計関数(AVG)の動作に関する理解を問う問題です。具体的な表のデータおよびSQL文に基づき、正しく演算結果を導出できるかがポイントとなります。

処理のステップ

  1. 表の結合
    “商品”表を左側とする外部結合(LEFT OUTER JOIN)で、商品コードを条件に“商品別売上実績”表を結合します。売上実績のない商品(S002、S005)の売上合計金額は NULL になります。

  2. 行の絞り込み
    WHERE 句で商品ランクが 'A' の行(S001:50、S002:NULL、S003:250)を残します。

  3. 平均値の計算
    SQLの集計関数である AVG は、NULL の行を除いて平均を求めます。(50+250)/2=150(50 + 250) / 2 = 150 となり、売上平均金額は 150 です。

各選択肢の解説

  • ア 100: 誤り。S002 の NULL を 0 として3行で平均した場合の値 (50+0+250)/3=100(50 + 0 + 250) / 3 = 100 です。
  • イ 150: 正解。SQL文の結合条件と集計関数を正しく適用した結果得られる売上平均金額です。
  • ウ 225: 誤り。集計時の行数の誤認や、抽出条件・NULL の扱いを誤った場合などに生じる数値と考えられます。
  • エ 275: 誤り。WHERE 句の条件を適用せず、売上実績のある4行すべてを平均した場合の値 (50+250+350+450)/4=275(50 + 250 + 350 + 450) / 4 = 275 です。

Spineチーム