IPA過去問ドリル

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

テクノロジ/データベース

“商品月間販売実績”表に対して,SQL文を実行して得られる結果はどれか。 商品月間販売実績 商品コード,総販売数,総販売金額 S001,150,45,000 S002,250,50,000 S003,150,15,000 S004,400,120,000 S005,400,80,000 S006,500,25,000 S007,50,60,000 〔SQL文〕 SELECT A.商品コード AS 商品コード,A.総販売数 AS 総販売数 FROM 商品月間販売実績 A WHERE 3 > (SELECT COUNT(*) FROM 商品月間販売実績 B WHERE A.総販売数 < B.総販売数) (注:本サイトでは原問題の表を文字表記に変換しています)

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

正解:ウ

解説

このSQL文は,各行Aについて,Aよりも総販売数が大きい行Bの件数が3件未満であるもの,すなわち総販売数の大きい順に数えたときに順位(同順位を許容した上位からの順位)が3位以内に入る行を抽出するものである。各商品について,自分より総販売数が大きい行の件数を数えると,S001(150):4件(250,400,400,500),S002(250):3件(400,400,500),S003(150):4件(S001と同じ),S004(400):1件(500),S005(400):1件(S004と同じ),S006(500):0件,S007(50):6件(他の全て)となる。この値が3未満(0,1,2のいずれか)となるのはS004,S005,S006であり,これらが抽出結果となる。

選択肢ごとの解説

  • 誤り。S001とS003は,自分より総販売数が大きい行がそれぞれ4件あり,3件以上であるため抽出条件(3 > 件数)を満たさず,結果に含まれない。
  • 誤り。アと同様にS001とS003が誤って含まれているほか,S007(総販売数50)は自分より大きい行が6件あるため,抽出条件を満たさず結果に含まれない。
  • 正しい。自分より総販売数が大きい行の件数が3件未満となるのはS004(1件),S005(1件),S006(0件)であり,これらが抽出される。
  • 誤り。S007(総販売数50)は,自分より総販売数が大きい行が6件あり,抽出条件(3件未満)を満たさないため,結果に含まれない。
データベーススペシャリストの過去問を演習モードで解く