DBデータベーススペシャリスト試験 午前Ⅱ
令和4年度秋期 データベーススペシャリスト 午前Ⅱ 問7
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア100
- イ150
- ウ225
- エ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による補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針