第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 文①:a SQL 文②:d
- イ SQL 文①:a SQL 文②:e
- ウ SQL 文①:b SQL 文②:e
- エ SQL 文①:b SQL 文②:f
- オ SQL 文①:c SQL 文②:f
▼ 解答・解説を見る
正解:エ
解答:エ(要点)
2つのSQL文の集計内容と並び順を読み取ります。
- SQL文①:
SUM(販売金額)をGROUP BY 顧客IDで集計し、ORDER BY 合計 DESCで並べる。つまり顧客IDごとの販売金額の合計を、大きい順に表示する(=b)。 - SQL文②:
COUNT(顧客ID)をGROUP BY 商品IDで集計し、ORDER BY 総数 ASCで並べる。COUNTはDISTINCTがないので重複を含めて件数を数えるため、商品IDごとの延べ顧客数を、少ない順に表示する(=f)。
ユニーク顧客数を数えるならCOUNT(DISTINCT 顧客ID)が必要で、ここでは使われていない点がポイント。よって①b・②fでエ。