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

令和6年度 秋期 午前Ⅱ 問7

データ操作

NULLに関する問題

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

商品

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

商品別売上実績

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

〔SQL文〕

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

✓ これが正解イ150

解説

ランクAの3行のうち NULL を除いた2行の平均で、150です。

商品表を左側に置いた LEFT OUTER JOIN なので、商品表の行はすべて残り、売上実績のない商品は売上合計金額が NULL になります。WHERE で商品ランクAに絞ると、S001 が50、S002 が NULL、S003 が250の3行です。AVG は NULL の行を計算から除くので、合計は50+250=300、件数は2で、平均は300÷2=150 です。見分ける軸は、外部結合で生まれた NULL を集約関数がどう扱うかです。AVG、SUM、MAX などの集約関数は NULL を無視しますが、件数の数え方まで変わる点に注意しましょう。NULL を0として3で割ると値が変わるので、どちらで割るかを確かめる習慣をつけると取り違えません。

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

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

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