SkillStack
テクノロジ系7 / 25問

データベーススペシャリスト試験 令和4年度 秋期 午前II 問7

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

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

データベーススペシャリスト試験 令和4年度 秋期 午前II 問7の図表

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】イ

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に質問できる
SkillStackで無料で始める