経営情報システム R06年度 第8問

第8問

以下に示す、ある小売店における販売データ「取引記録」から、販売店別の商品ご との販売個数を集計した「店舗別商品販売個数」を作成することを考える。 取引記録 取引ID 商品ID 販売店ID 販売個数 T0001 Y A 2 T0002 Y A 1 T0003 X A 3 T0004 Y B 3 T0005 Y A 1 T0006 X B 2 T0007 X B 3 T0008 Z A 1 T0009 X A 1 … … … … 店舗別商品販売個数 商品ID 販売店A 販売店B X 622 274 Y 817 351 Z 151 72 9  以下のSQL 文の空欄①~③に入る語句の組み合わせとして、最も適切なものを 下記の解答群から選べ。 【SQL 文】 SELECT  商品ID,  SUM(CASE ① WHEN 'A' THEN ② ELSE 0 END) AS 販売店A,  SUM(CASE ① WHEN 'B' THEN ② ELSE 0 END) AS 販売店B FROM  取引記録 GROUP BY ③ ORDER BY ③ ;

  1. ①:商品ID   ②:1      ③:販売店ID
  2. ①:商品ID   ②:販売個数  ③:販売店ID
  3. ①:販売店ID  ②:1      ③:商品ID
  4. ①:販売店ID  ②:1      ③:販売店ID
  5. ①:販売店ID  ②:販売個数  ③:商品ID
▼ 解答・解説を見る

正解:

解答:オ

商品IDごとに行を作り、販売店A・Bの販売個数を横持ち集計する「行→列変換(ピボット)」をCASE式で行うSQL。

  • ①=販売店IDCASE 販売店ID WHEN 'A' … WHEN 'B' …として、販売店で列を振り分ける。判定対象は販売店IDが正しい。
  • ②=販売個数:店舗が一致したときに合計したいのは「販売個数」。SUM(CASE … THEN 販売個数 ELSE 0 END)で店舗別の販売個数合計が得られる。THEN 1では件数(取引回数)の集計になり、個数の集計表(622や817など)と一致しないため誤り。
  • ③=商品ID:出力は商品IDごとの1行なので、GROUP BY 商品IDORDER BY 商品IDが正しい。

よって ①:販売店ID、②:販売個数、③:商品ID の

#データベース

← 経営情報システムの一覧へ戻る