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

第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 の重複を含む)の総数を、総数の少ない順に表示する。

第8問の図
  1. SQL 文①:a SQL 文②:d
  2. SQL 文①:a SQL 文②:e
  3. SQL 文①:b SQL 文②:e
  4. SQL 文①:b SQL 文②:f
  5. 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で

#データベース

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