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

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