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

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

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

問題

“商品月間販売実績”表に対して,SQL文を実行して得られる結果はどれか。
商品コード・総販売数・総販売金額から成る商品月間販売実績表,SQL文,及び商品コード・総販売数の結果候補四つ。
商品コード・総販売数・総販売金額から成る商品月間販売実績表,SQL文,及び商品コード・総販売数の結果候補四つ。

選択肢

  1. ア
    S001:150,S003:150,S006:500
  2. イ
    S001:150,S003:150,S007:50
  3. ウ
    S004:400,S005:400,S006:500
  4. エ
    S004:400,S005:400,S007:50
解き方のヒントを見る

抽出条件の適用範囲を確認する

SQLの抽出結果を考えるときは、条件が各行のどの値を対象にし、複数条件がどの関係で評価されるかを整理して、表示対象になる行の範囲を丁寧に確認しましょう。

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

選択肢を比べる前に、抽出条件を一つずつ分解し、各行について条件の対象列と判定の組み合わせを表にして、条件全体が要求する範囲だけを確認し、その対応関係を最後に確認する。

視点

抽出条件の検討では、列ごとの値、条件同士の結び付き、評価対象となる行の単位を分けて整理します。途中で得た印象だけで結果を決めず、各条件を同じ基準で照合し、結果集合の範囲が一貫しているかを確認する視点が役立ちます。

確認ポイント

  • 各条件が参照する列と値の対応を整理する
  • 条件同士の組み合わせがどの範囲に影響するか確認する
  • 各行を同じ基準で照合し、結果の範囲を見直す
正解と解説を見る

正解

ウ

解説

相関サブクエリは、各商品Aについて、Aより総販売数が多い商品Bの件数を数えます。その件数が3件未満となる商品を抽出すると、S004、S005、S006の3件となるため、正答はウです。

理由

WHERE句は、Aの総販売数よりBの総販売数が大きい行をCOUNT(*)で数え、その件数が3件未満かを判定します。S004は400個より多い商品がS006の500個だけで1件、S005も1件、S006は該当商品がなく0件です。したがって、これら3商品が抽出されます。

比較

S001とS003は総販売数が150個で、250個のS002、400個のS004、400個のS005、500個のS006の4件が上回ります。S002は400個のS004・S005と500個のS006の3件で、3件未満ではありません。S007は50個なので他の6件が上回り、いずれも抽出条件を満たしません。

選択肢ア

これは不正解だよ。S001とS003は総販売数が150個で、これらを上回る商品はS002の250個、S004とS005の400個、S006の500個の4件です。COUNT(*)は3件ではなく4件となるため、3件未満というWHERE条件を満たさず、アの2商品は結果に残りません。

選択肢イ

これは不正解だよ。S001とS003は150個より多い商品が4件あるため抽出対象外です。また、S007は50個より多い商品が6件あり、同じく3件未満の条件を満たしません。イは、比較対象の件数条件に合わない商品を並べているため、SQLの結果とは一致しません。

選択肢ウ(正解)

これは正解だよ。S004の400個を上回るのはS006の500個だけで1件、S005も1件、S006の500個を上回る商品は0件です。いずれもCOUNT(*)が3件未満となり、S004:400、S005:400、S006:500が抽出されるため、ウと一致します。

選択肢エ

これは不正解だよ。S004とS005は総販売数400個で、上回る商品がS006の500個だけのため抽出されます。しかしS007は50個で、S001からS006までの6件が上回るので抽出されません。エはS007を含め、抽出されるべきS006を外している点が条件と異なります。

学習のポイント

相関サブクエリの行ごとのCOUNTと、不等号条件の適用方法を学習できます。

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

関連する過去問一覧

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