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

平成29年度春期 データベーススペシャリスト 午前Ⅱ 問10

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

問題

ある月の“月末商品在庫”表と“当月商品出荷実績”表を使って,ビュー“商品別出荷実績”を定義した。このビューにSQL文を実行した結果の値はどれか。 CREATE VIEW 商品別出荷実績(商品コード,出荷実績数,月末在庫数) AS SELECT 月末商品在庫.商品コード,SUM(出荷数),在庫数 FROM 月末商品在庫 LEFT OUTER JOIN 当月商品出荷実績 ON 月末商品在庫.商品コード = 当月商品出荷実績.商品コード GROUP BY 月末商品在庫.商品コード,在庫数 SELECT SUM(月末在庫数) AS 出荷商品在庫合計 FROM 商品別出荷実績 WHERE 出荷実績数 <= 300
商品コード・商品名・在庫数から成る月末商品在庫表と,商品コード・商品出荷日・出荷数から成る当月商品出荷実績表。
商品コード・商品名・在庫数から成る月末商品在庫表と,商品コード・商品出荷日・出荷数から成る当月商品出荷実績表。

選択肢

  1. ア
    400
  2. イ
    500
  3. ウ
    600
  4. エ
    700
解き方のヒントを見る

SQL抽出条件を読むための一視点

SQLの抽出条件と結果を対応づけるときは、各条件がどの行や値に影響するかを分けて捉え、条件同士の関係と適用される対象を順に整理することが重要です。という視点を意識します。

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

確認する観点を「条件が評価される対象とタイミング」に絞り、列の値、行の単位、条件の組み合わせが結果へどう関係するかを、選択肢ごとに丁寧に照合します。という手順で確認します。

視点

抽出条件を読む際は、まず参照される列と行の単位を区別し、条件ごとの役割を整理します。そのうえで、複数条件が同時に現れる場合は、条件間の結び付きと評価対象が一貫しているかを確認し、結果の並びや表示内容とは切り分けて考えます。

確認ポイント

  • 条件が参照する列と、評価の対象となる行の単位が一致しているか確認する。
  • 複数の条件がある場合、それぞれの関係を混同せず、同じ対象に対する判定かを確認する。
  • 抽出される行の条件と、表示される列や並び順を別の論点として切り分ける。
正解と解説を見る

正解

ア

解説

LEFT OUTER JOINとGROUP BYにより、商品ごとの出荷数合計と月末在庫数を持つビューが作られる。出荷実績数が300以下の商品の在庫数だけを合計すると、S001の100個とS003の300個が対象となり、合計は400個になる。

理由

商品別の出荷実績数は、S001が50+100=150個、S003が150+150=300個、S005が100+250=350個となる。S002とS004は出荷明細がないため、SUMの結果はNULLです。WHERE 出荷実績数 <= 300では、150個と300個の商品が対象になる。

比較

対象商品の月末在庫数は、S001が100個、S003が300個です。したがって、出荷商品在庫合計は100個+300個=400個となる。S005は出荷実績数が350個で条件を超え、S002とS004は出荷実績数がNULLなので条件を満たさない。

選択肢ア(正解)

これは正解だよ。商品別に出荷数を集計すると、S001は150個、S003は300個で条件を満たす。これらの月末在庫数はそれぞれ100個と300個なので、式は100個+300個=400個となる。S005は350個で除外され、出荷実績がないS002とS004も対象外になる。

選択肢イ

これは不正解だよ。条件を満たす商品から得られる在庫数は100個と300個で、合計は400個である。500個は、出荷実績数が300個以下という条件に対応する在庫数の組合せになっていない。出荷数と在庫数を混同したり、対象外の商品を加えたりすると公式条件と一致しない。

選択肢ウ

これは不正解だよ。600個になるには、正しい対象である100個と300個に加えて200個を加える必要があるが、在庫200個のS005は出荷実績が350個で、300個以下の条件を満たさない。したがってS005を含める点が条件と異なり、正しい合計は400個である。

選択肢エ

これは不正解だよ。条件を満たす行の在庫数は100個と300個だけであり、700個にはならない。出荷実績がない商品を含めても、NULLは300以下とは判定されない。また、S005の出荷実績は350個で条件外なので、在庫200個を加えることもできず、700個は公式の抽出条件と一致しない。

学習のポイント

GROUP BY後の集約値にWHERE条件を適用する処理順序と、NULLの比較結果を理解する。

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

関連する過去問一覧

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