販売価格が決められていない“商品”表に、次のSQL文を実行して販売価格を設定する。このとき、販売ランクが b の商品の販売価格の平均値は幾らか。
UPDATE 商品 SET 販売価格 =
CASE
WHEN 販売ランク = 'a' THEN 単価 * 0.9
WHEN 販売ランク = 'b' THEN 単価 - 500
WHEN 販売ランク = 'c' THEN 単価 * 0.7
ELSE 単価
END
商品
┌────┬───┬─────┬────┬────┐
│商品番号│商品名│販売ランク│ 単価 │販売価格│
┝━━━━┿━━━┿━━━━━┿━━━━┿━━━━┥
│1001│ U │ a │ 2,000 │ NULL │
├────┼───┼─────┼────┼────┤
│2002│ V │ b │ 2,000 │ NULL │
├────┼───┼─────┼────┼────┤
│3003│ W │ a │ 3,000 │ NULL │
├────┼───┼─────┼────┼────┤
│4004│ X │ c │ 3,000 │ NULL │
├────┼───┼─────┼────┼────┤
│5005│ Y │ b │ 4,000 │ NULL │
├────┼───┼─────┼────┼────┤
│6006│ Z │ d │ 100 │ NULL │
└────┴───┴─────┴────┴────┘
ア 1,675
イ 2,100
ウ 2,250
エ 2,500
エ
SQL文の意味は、
商品表の CASE で場合分けして、販売価格を更新する。
その条件は
販売ランクが 'a' の時: 単価 * 0.9
販売ランクが 'b' の時: 単価 - 500
販売ランクが 'c 'の時: 単価 * 0.7
その他の場合: 単価をそのまま更新
ということである。
条件に合うのは、商品番号が 2002 と 5005で、その販売価格はそれそれ、
商品番号2002: 1,500
商品番号5005: 3,500
となる。
従って、販売ランクが b の販売価格の平均値は
(1,500 + 3,500) ÷ 2 = 2,500である。
問25 | 目次 | 問27 |