過去問解きまくり研究所 ホーム

平成29年度 春期 午前Ⅱ 問17

データベース

NULLに関する問題

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

商品

商品コード商品名商品ランク
S001PPPA
S002QQQA
S003RRRA
S004SSSB
S005TTTC
S006UUUC

商品別売上実績

商品コード売上合計金額
S00150
S003250
S004350
S006450

〔SQL文〕

SELECT AVG(売上合計金額) AS 売上平均金額
     FROM 商品 LEFT OUTER JOIN 商品別売上実績
          ON 商品.商品コード = 商品別売上実績.商品コード
     WHERE 商品ランク = 'A'
     GROUP BY 商品ランク
答えと解説を見る

✓ これが正解イ150

解説

Aランク3商品のうち売上のある2件を平均して、150になります。

外部結合と集約関数の組合せは、どの行が残り、そのとき値が何になるかを軸に計算します。商品表を左にした左外部結合なので、商品表の6行は売上実績が無くても全て残り、相手の無い行の売上合計金額は NULL になります。WHERE 句で商品ランクが A の行に絞ると、S001(50)、S002(NULL)、S003(250)の3行が残ります。AVG は NULL を計算に含めないので、値のある2行だけで平均を取り、(50+250)÷2=150 です。GROUP BY 商品ランクで A のグループ1つにまとまるため、結果も150の1行になります。外部結合で生まれた NULL は AVG の分母に入らない、という点を押さえておくと計算を誤りません。

ほかの選択肢はなぜ違うのか

出典:平成29年度 春期 システム監査技術者試験 午前Ⅱ 問17

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)