中小企業診断士 過去問
令和8年度(2026年)
問168 (経営情報システム 問8)
問題文
ある小売店では、以下に示す「販売記録」表を用いて販売管理を行っている。
顧客や商品の販売傾向を分析するために、この「販売記録」表からいくつかの表を作成するSQL文を考えた。次のSQL文①とSQL文②に対する説明文a~fの組み合わせとして、最も適切なものを下記の選択肢から選べ。
【SQL文①】
SELECT 顧客ID, SUM(販売金額) AS 合計
FROM 販売記録 GROUP BY 顧客ID ORDER BY 合計 DESC;
【SQL文②】
SELECT 商品ID, COUNT(顧客ID) AS 総数
FROM 販売記録 GROUP BY 商品ID ORDER BY 総数 ASC;
[説明文]
a 顧客ID、および顧客IDごとの販売金額の合計を、合計額の小さい順に表示する。
b 顧客ID、および顧客IDごとの販売金額の合計を、合計額の大きい順に表示する。
c 顧客ID、および顧客IDごとの販売商品数の合計を、合計数の多い順に表示する。
d 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の多い順に表示する。
e 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の少ない順に表示する。
f 商品ID、および商品IDごとに販売した延べ顧客数(同一顧客IDの重複を含む)の総数を、総数の少ない順に表示する。
顧客や商品の販売傾向を分析するために、この「販売記録」表からいくつかの表を作成するSQL文を考えた。次のSQL文①とSQL文②に対する説明文a~fの組み合わせとして、最も適切なものを下記の選択肢から選べ。
【SQL文①】
SELECT 顧客ID, SUM(販売金額) AS 合計
FROM 販売記録 GROUP BY 顧客ID ORDER BY 合計 DESC;
【SQL文②】
SELECT 商品ID, COUNT(顧客ID) AS 総数
FROM 販売記録 GROUP BY 商品ID ORDER BY 総数 ASC;
[説明文]
a 顧客ID、および顧客IDごとの販売金額の合計を、合計額の小さい順に表示する。
b 顧客ID、および顧客IDごとの販売金額の合計を、合計額の大きい順に表示する。
c 顧客ID、および顧客IDごとの販売商品数の合計を、合計数の多い順に表示する。
d 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の多い順に表示する。
e 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の少ない順に表示する。
f 商品ID、および商品IDごとに販売した延べ顧客数(同一顧客IDの重複を含む)の総数を、総数の少ない順に表示する。
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
反映中…
中小企業診断士試験 令和8年度(2026年) 問168(経営情報システム 問8) (訂正依頼・報告はこちら)
ある小売店では、以下に示す「販売記録」表を用いて販売管理を行っている。
顧客や商品の販売傾向を分析するために、この「販売記録」表からいくつかの表を作成するSQL文を考えた。次のSQL文①とSQL文②に対する説明文a~fの組み合わせとして、最も適切なものを下記の選択肢から選べ。
【SQL文①】
SELECT 顧客ID, SUM(販売金額) AS 合計
FROM 販売記録 GROUP BY 顧客ID ORDER BY 合計 DESC;
【SQL文②】
SELECT 商品ID, COUNT(顧客ID) AS 総数
FROM 販売記録 GROUP BY 商品ID ORDER BY 総数 ASC;
[説明文]
a 顧客ID、および顧客IDごとの販売金額の合計を、合計額の小さい順に表示する。
b 顧客ID、および顧客IDごとの販売金額の合計を、合計額の大きい順に表示する。
c 顧客ID、および顧客IDごとの販売商品数の合計を、合計数の多い順に表示する。
d 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の多い順に表示する。
e 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の少ない順に表示する。
f 商品ID、および商品IDごとに販売した延べ顧客数(同一顧客IDの重複を含む)の総数を、総数の少ない順に表示する。
顧客や商品の販売傾向を分析するために、この「販売記録」表からいくつかの表を作成するSQL文を考えた。次のSQL文①とSQL文②に対する説明文a~fの組み合わせとして、最も適切なものを下記の選択肢から選べ。
【SQL文①】
SELECT 顧客ID, SUM(販売金額) AS 合計
FROM 販売記録 GROUP BY 顧客ID ORDER BY 合計 DESC;
【SQL文②】
SELECT 商品ID, COUNT(顧客ID) AS 総数
FROM 販売記録 GROUP BY 商品ID ORDER BY 総数 ASC;
[説明文]
a 顧客ID、および顧客IDごとの販売金額の合計を、合計額の小さい順に表示する。
b 顧客ID、および顧客IDごとの販売金額の合計を、合計額の大きい順に表示する。
c 顧客ID、および顧客IDごとの販売商品数の合計を、合計数の多い順に表示する。
d 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の多い順に表示する。
e 商品ID、および商品IDごとに販売したユニーク顧客数(同一顧客IDの重複を除く)の総数を、総数の少ない順に表示する。
f 商品ID、および商品IDごとに販売した延べ顧客数(同一顧客IDの重複を含む)の総数を、総数の少ない順に表示する。
- SQL文①:a SQL文②:d
- SQL文①:a SQL文②:e
- SQL文①:b SQL文②:e
- SQL文①:b SQL文②:f
- SQL文①:c SQL文②:f
正解!素晴らしいです
残念...
画像拡大
この過去問の解説 (1件)
01
「SQL文①:b SQL文②:f」の組み合わせが当てはまります。
SQLとは、データベースから必要な情報を取り出したり、集計したりするための言語です。
SQL文①は、顧客ごとの販売金額の合計を、大きい順に表示する処理です。
一方、SQL文②は、商品ごとの延べ顧客数を、少ない順に表示する処理です。
この問題では、特に次の違いを理解することが重要です。
SUM:数値を合計する
COUNT:データの件数を数える
ASC:小さい順(昇順)に並べる
DESC:大きい順(降順)に並べる
また、COUNTでは、DISTINCTを指定しなければ、同じ顧客IDが複数回登場しても、それぞれを数えます。
SQL文①の解説
SELECT 顧客ID, SUM(販売金額) AS 合計
FROM 販売記録
GROUP BY 顧客ID
ORDER BY 合計 DESC;
このSQL文は、顧客ごとに販売金額を集計して、合計額の大きい順に表示します。
それぞれの命令を確認します。
SELECT 顧客ID, SUM(販売金額) AS 合計
顧客IDと、販売金額を合計した値を取り出します。
SUMは合計を求める関数です。
ASは、集計結果に名前を付けるために使用します。
ここでは、販売金額の合計に「合計」という名前を付けています。
FROM 販売記録
「販売記録」という表からデータを取り出します。
GROUP BY 顧客ID
顧客IDが同じデータを1つのグループにまとめます。
これによって、顧客ごとの販売金額を合計できます。
ORDER BY 合計 DESC
販売金額の合計を、大きい順(降順)に並べます。
つまり、販売金額が最も多い顧客から順番に表示されます。
したがって、SQL文①はbに該当します。
SQL文②の解説
SELECT 商品ID, COUNT(顧客ID) AS 総数
FROM 販売記録
GROUP BY 商品ID
ORDER BY 総数 ASC;
このSQL文は、商品ごとに顧客IDの件数を数えて、少ない順に表示します。
SELECT 商品ID, COUNT(顧客ID) AS 総数
商品IDと、顧客IDの件数を取り出します。
COUNTはデータの件数を数える関数です。
ここでは、顧客IDがNULLではないレコードを数えています。
重要なのは、COUNT(顧客ID)では、同じ顧客IDが複数回登場しても、それぞれを数えることです。
例えば、同じ商品をAさんが3回、Bさんが1回購入した場合、COUNT(顧客ID)の結果は4になります。
これは、重複を含む延べ顧客数です。
一方、重複を除いたユニーク顧客数を数える場合は、次のように記述します。
COUNT(DISTINCT 顧客ID)
この場合、AさんとBさんの2人だけを数えるため、結果は2になります。
FROM 販売記録
「販売記録」という表からデータを取り出します。
GROUP BY 商品ID
商品IDが同じデータを1つのグループにまとめます。
これによって、商品ごとに顧客IDの件数を数えられます。
ORDER BY 総数 ASC
総数を、小さい順(昇順)に並べます。
つまり、延べ顧客数が少ない商品から順番に表示されます。
したがって、SQL文②はfに該当します。
適切です。
SQL文①は、SUMによって顧客ごとの販売金額を合計し、DESCによって合計額の大きい順に表示します。
SQL文②は、COUNTによって商品ごとの延べ顧客数を数え、ASCによって総数の少ない順に表示します。
したがって、この組み合わせが当てはまります。
今回のSQL文で使用されている主な命令は、次のとおりです。
<SUM>
数値の合計を求める関数です。
例:SUM(販売金額)=販売金額の合計
<COUNT>
データの件数を数える関数です。
COUNT(顧客ID)では、同じ顧客IDが複数回登場しても、それぞれを数えます。
<COUNT(DISTINCT ...)>
重複を除いた件数を数えます。
例:COUNT(DISTINCT 顧客ID)=ユニーク顧客数
<GROUP BY>
同じ値を持つデータをグループにまとめます。
<ORDER BY ... ASC>
小さい順(昇順)に並べます。
<ORDER BY ... DESC>
大きい順(降順)に並べます。
この問題では、SUMとCOUNTの違い、COUNTとCOUNT(DISTINCT ...)の違い、ASCとDESCの違いを正しく理解することがポイントです。
したがって、最も適切な組み合わせは「SQL文①:b SQL文②:f」です。
参考になった数3
この解説の修正を提案する
前の問題(問167)へ
令和8年度(2026年) 問題一覧
次の問題(問169)へ