SQL外部結合とAVG集約関数

1. 商品表(商品ランク = 'A' の行): ・S001 (PPP, A) ・S002 (QQQ, A) ・S003 (RRR, A) の3行が対象となります。 2. 商品別売上実績表との LEFT OUTER JOIN(条件: 商品コードが一致): ・S001: 売上実績に存在 → 売上合計金額 = 50 ・S002: 売上実績に存在しない → 売上合計金額 = NULL ・S003: 売上実績に存在 → 売上合計金額 = 250 3. SQLの集約関数 AVG(売上合計金額) は、NULL値を無視(除外)して計算されます。 したがって、計算対象は S001(50)と S003(250)の2行となり、 $$\text{AVG} = \frac{50 + 250}{2} = \frac{300}{2} = 150$$ となります。よって正解は イ(150)です。 NULL値を 0 とみなして3行で平均を計算した場合の誤算値です((50 + 0 + 250) / 3 = 100)。SQL の AVG 関数は NULL 行を除外して計算します。 商品別売上実績表の全レコードの平均などの誤算値です。 ランクA以外の行を含めて計算した場合などの誤算値です。

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

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

〔商品〕

商品コード

商品名

商品ランク

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

出典令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7
ア
100
イ
150
ウ
225
エ
275