過去問解きまくり研究所 ホーム

平成26年度 春期 午前Ⅱ 問16

データ操作

相関副問合せに関する問題

“商品月間販売実績”表に対して,SQL 文を実行して得られる結果はどれか。

商品月間販売実績

商品コード総販売数総販売金額
S00115045,000
S00225050,000
S00315015,000
S004400120,000
S00540080,000
S00650025,000
S0075060,000

〔SQL 文〕

SELECT A.商品コード AS 商品コード, A.総販売数 AS 総販売数
    FROM 商品月間販売実績 A
    WHERE 3 > (SELECT COUNT(*) FROM 商品月間販売実績 B
                    WHERE A.総販売数 < B.総販売数)

選択肢は原典では商品コード・総販売数の表(各3行)。各肢の行を上から順に並べた。

答えと解説を見る

✓ これが正解ウ商品コード:S004,S005,S006 / 総販売数:400,400,500

解説

自分より総販売数が多い商品が3未満の行、つまり上位3件が残ります。

副問合せは、外側の行 A ごとに、A より総販売数が多い行 B の数を数えます。WHERE 3 > その数なので、自分より多い商品が2件以下の行だけが残ります。各行で数えると、S006(500)は0件、S004 と S005(400)は500の1件だけ、S002(250)は400、400、500の3件、S001 と S003(150)は4件、S007(50)は6件です。0件と1件の S006、S004、S005 が残り、S002 は 3 > 3 が成り立たないので外れます。結果は S004(400)、S005(400)、S006(500)の3行です。これは相関副問合せで、自分より大きいものの数を数えて順位を求める形で、同じ値の行は同じ順位として扱われます。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)