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

平成24年度 春期 午前 問26

データベース

SQLに関する問題

販売価格が決められていない“商品”表に,次の SQL 文を実行して販売価格を設定する。このとき,販売ランクが b の商品の販売価格の平均値は幾らか。

UPDATE 商品 SET 販売価格 =
    CASE
        WHEN 販売ランク = 'a' THEN 単価 * 0.9
        WHEN 販売ランク = 'b' THEN 単価 - 500
        WHEN 販売ランク = 'c' THEN 単価 * 0.7
        ELSE 単価
    END

商品
商品番号商品名販売ランク単価販売価格
1001Ua2,000NULL
2002Vb2,000NULL
3003Wa3,000NULL
4004Xc3,000NULL
5005Yb4,000NULL
6006Zd100NULL
答えと解説を見る

✓ これが正解エ2,500

解説

販売ランクがbの二行だけを平均して2500です。

この問題は計算そのものよりも、どの行を対象にするかを先に決められるかで差が付きます。見分けの軸は、拾った行が問われている区分と一致しているか、という一点です。問われているのは販売ランクがbの商品の平均だけですので、六行のうち該当する二行を取り出せば、残りは読む必要がありません。該当するのは商品番号2002と5005で、単価はそれぞれ2000と4000です。次に、その二行に当たる枝だけを読みます。UPDATE 文の中のCASE 式は、上から順に条件を見て、最初に当てはまった枝の値を返し、どれにも当てはまらなければ最後の枝の値を返す形になっています。bに当たる枝は単価から500を引くと定めていますので、更新後の販売価格は1500と3500です。平均は両者を足して二で割り、2500になります。別の道でも確かめられます。二つとも同じ500を引いてから平均を取ることと、先に平均を出してから500を引くことは同じですので、2000と4000の平均である3000から500を引いても2500です。SQL の計算問題では、対象の行を絞ってから、その行に当たる枝だけを読む順序を守ってください。

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

出典:平成24年度 春期 応用情報技術者試験 午前 問26

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