データベーススペシャリスト試験 令和6年度 秋期 午前II 問7
"商品"表と"商品別売上実績"表に対して、SQL文を実行して得られる売上平均金額はどれか。
〔SQL文〕 SELECT AVG(売上合計金額) AS 売上平均金額 FROM 商品 LEFT OUTER JOIN 商品別売上実績 ON 商品.商品コード = 商品別売上実績.商品コード WHERE 商品ランク = ’A’

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】イ
最初に、商品ランクがAの商品だけに着目します。該当する商品コードはS001、S002、S003です。LEFT OUTER JOINなので、売上実績がない商品も結果に残ります。結合後の売上合計金額は、S001が50、S002がNULL、S003が250となります。
AVG関数はNULLを計算対象から除外します。したがって、売上実績が存在する2件だけを用いて、売上平均金額は次のように計算します。
(50+250)÷2=150
よって、正解はイの150です。WHERE句は外部結合の後に評価されますが、条件の対象である商品ランクは左側の「商品」表にあるため、売上実績をもたないS002も結合結果に残ります。ただし、その売上合計金額はNULLなのでAVGの分母には入りません。
アの100は誤りです。これはS002のNULLを0として扱い、(50+0+250)÷3と計算した値です。AVGはNULLを0へ置き換えません。
ウの225は誤りです。対象となる値は50と250だけなので、225になる計算根拠はありません。商品ランクA以外の売上を含めても正しい集計にはなりません。
エの275は誤りです。これは商品ランクによる絞込みを行わず、売上実績の4件を(50+250+350+450)÷4で平均した値です。
【ポイント】 COUNT(列名)、SUM、AVGなどの集合関数は、原則としてNULLを除外します。 外部結合で残された行の対応する右表の列にはNULLが設定されます。NULLを0として平均したい場合は、COALESCE関数などで明示的に0へ変換します。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前II 問7
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる