DBデータベーススペシャリスト試験 午前Ⅱ

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

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

“商品”表と“商品別売上実績”表に対して,SQL文を実行して得られる売上平均金額はどれか。
商品コード・商品名・商品ランクから成る商品表,商品コード・売上合計金額から成る商品別売上実績表,両表をLEFT OUTER JOINして商品ランクAの平均を求めるSQL文,及び四つの数値候補。
商品コード・商品名・商品ランクから成る商品表,商品コード・売上合計金額から成る商品別売上実績表,両表をLEFT OUTER JOINして商品ランクAの平均を求めるSQL文,及び四つの数値候補。

選択肢

  1. ア
    100
  2. イ
    150
  3. ウ
    225
  4. エ
    275
解き方のヒントを見る

SQL抽出条件を読み解く視点

SQLの抽出条件と結果を対応づけるときは、条件が対象行のどの属性を評価し、複数条件がどのような単位で組み合わさるかに注目します。値の比較だけでなく、対象範囲も整理しましょう。

この問題で問われていること

確認する観点を、各条件がどの列の値に対して適用され、条件同士の組合せが判定対象をどう区切るかに絞ります。結果を先に決めず、条件と行の対応を順に見比べてください。

視点

抽出条件を読む際は、列・値・比較の関係と、条件が適用される対象行の範囲を分けて整理します。複数の条件がある場合も、まず個々の役割を確認してから全体の関係を考えます。

確認ポイント

  • 各条件が参照している列と、その列の値の扱いを確認する
  • 条件が適用される対象行の範囲を整理し、行ごとの対応を見直す
  • 複数条件の組合せを一度に決めず、それぞれの役割を分けて確認する
正解と解説を見る

正解

イ

解説

WHERE句で商品ランクがAの商品だけに絞ると、S001、S002、S003が対象です。売上金額は50円、NULL、250円となり、AVGはNULLを除外するため、(50円+250円)÷2=150円です。

理由

商品ランクAはS001、S002、S003です。商品別売上実績と結合すると、売上金額は順に50円、NULL、250円になります。AVG関数はNULLを平均の分母にも分子にも含めないため、計算式は(50円+250円)÷2=150円です。

比較

LEFT OUTER JOINでは売上実績がないS002も結合結果に残りますが、WHERE句でランクA以外は除外されます。NULLを0円とみなしたり、Aランク以外の実績を加えたりすると、SQL文のAVGが求める値とは異なります。

選択肢ア

これは不正解だよ。100円は、Aランク3商品の売上を50円、NULL、250円として、NULLを0円相当とみなし、(50円+0円+250円)÷3=100円と計算した場合の値です。しかしAVG関数はNULLを0円として分母に含めません。

選択肢イ(正解)

これは正解だよ。WHERE句によって商品ランクAのS001、S002、S003が対象になります。売上金額は50円、NULL、250円で、AVG関数はNULLを除外するため、(50円+250円)÷2=150円となります。

選択肢ウ

これは不正解だよ。225円は、公式画像に示されたAランク商品の売上金額と、AVG関数がNULLを扱う条件からは導けません。対象となる実値は50円と250円であり、NULLを含めるかどうかを変えても、指定SQLの結果はこの値にはなりません。

選択肢エ

これは不正解だよ。275円は、商品別売上実績表にある50円、250円、350円、450円をすべて平均した値(50円+250円+350円+450円)÷4=275円です。しかしSQLは商品ランクAに絞るため、B・Cランクの実績は対象外です。

学習のポイント

LEFT OUTER JOIN、WHERE句、NULL、AVG関数の組合せによる集計対象の変化を理解する。

出典:独立行政法人 情報処理推進機構(IPA)令和4年度秋期 データベーススペシャリスト試験 午前Ⅱ 問7(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針