難易度・正答率・重要度
- 難易度:★★★☆☆(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での集計ロジックは必須スキル。