過去問解説(経営情報システム)_2024年 第8問

難易度・正答率・重要度

  • 難易度:★★★☆☆(SQL構文と集計ロジックの理解)
  • 正答率:★★☆☆☆(CASE式の使い方が鍵)
  • 重要度:★★★☆☆(データ分析・BI設計に直結)

問題文

以下に示す、ある小売店における販売データ「取引記録」から、販売店別の商品ごとの販売個数を集計した「店舗別商品販売個数」を作成することを考える。

以下の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 ;

〔解答群〕

①:商品ID ②:1 ③:販売店ID
①:商品ID ②:販売個数 ③:販売店ID
①:販売店ID ②:1 ③:商品ID
①:販売店ID ②:1 ③:販売店ID
①:販売店ID ②:販売個数 ③:商品ID

出典:中小企業診断協会|2024年度 第1次試験問題|経営情報システム(PDF)

解答

  • 正解:オ(①:販売店ID ②:販売個数 ③:商品ID)

解説

  • 目的: 商品IDごとに、販売店A・販売店Bでの販売個数を集計するクロス集計形式の出力。
  • SQL構文のポイント:
    CASE式で販売店IDが’A’または’B’のときに販売個数を加算。
    SUM(CASE 販売店ID WHEN 'A' THEN 販売個数 ELSE 0 END) のように記述。
    GROUP BY 商品ID により、商品ごとに集計。
  • ①:販売店ID
    店舗ごとの条件分岐に使うため、CASEの対象は「販売店ID」。
  • ②:販売個数
    条件に一致したときに加算する値は「販売個数」。1では集計値にならない。
  • ③:商品ID
    商品ごとに集計するため、GROUP BY対象は「商品ID」。
  • 他の選択肢の誤り:
    ・ア・イ:CASEの対象が商品ID → 店舗別集計ができない。
    ・ウ・エ:加算値が1 → 実数値の販売個数が反映されない。

学習のポイント

  • CASE式の構文:
    SUM(CASE 条件対象 WHEN 条件値 THEN 加算値 ELSE 0 END)
  • クロス集計のSQL:
    条件ごとにCASE式を使い、複数列に分けて集計。
  • GROUP BYの設計:
    集計単位(商品・店舗・期間など)に応じて適切に指定。
  • 実務応用:
    BIツールや売上分析で、商品別・店舗別・期間別の集計に頻出。SQLでの集計ロジックは必須スキル。