令和4年度 秋期 データベーススペシャリスト試験 午前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'
GROUP BY 商品ランク
解答・解説
正解: イ. 150
本設問は、「商品」表と「商品別売上実績」表に対してSQL文を実行し、得られる売上平均金額を答える問題です。表のデータとSQL文に沿って、順に計算します。
売上平均金額の算出プロセス
表の結合(JOIN)
「商品」表を左側とする外部結合(LEFT OUTER JOIN)で、商品コードを条件に「商品別売上実績」表を結合します。売上実績のない商品(S002、S005)の売上合計金額は NULL になります。行の絞り込みとグループ化
WHERE 句で商品ランクが 'A' の行(S001:50、S002:NULL、S003:250)を残し、GROUP BY で商品ランクごと(ここでは A の1グループ)にまとめます。平均値の集計(AVG関数)
集約関数AVG()は、NULL の行を除いて平均を求めます。 です。
指定された条件に従って正しく計算を行った結果、売上平均金額は 150 となるため、正解は「イ」となります。
各選択肢の解説
- ア (100): 誤り。S002 の NULL を 0 として3行で平均した場合の値 です。
- イ (150): 正解。SQL文によって全対象レコードから正しく算出された売上平均金額です。
- ウ (225): 誤り。抽出条件や NULL の扱いを誤った場合などに生じる数値と考えられます。
- エ (275): 誤り。結合条件を誤って意図しないレコードを掛け合わせるクロス結合(直積)が発生した場合や、合計金額の計算式を誤った場合に算出される値と考えられます。