単なるカウントだったら簡単なのですが、Excelでユニーク数をピボットテーブルを使って調べたいときがあります。
※ユニーク数とは、重複しないカウントのことです。ポケモンを1000匹捕まえても、図鑑は151匹って出るじゃないですか(初代GB赤緑の話)ああいう"種類"のカウントのことです。
#ユニーク数の意味
例えば売上明細等々のデータがあって、
- ① 商品ごとに売れた"個数"の集計
- ② 商品ごとに買った人の"ユニーク人数"の集計
を抽出してください、みたいな仕事があります。
①は売れた数量の単なる合計。②のユニーク人数っていうのは、同じお客さんが同じ商品Aを3回買っていたとしても、商品Aの購入者数を1と数えるってこと。
(ユニーク数を調べることでどれだけ多くのお客さんに人気があるのかが分かります。
1人が10個まとめ買いした場合と、10人が1個ずつ買って行った場合とでは、「10個売れた」結果は同じですけど、人気度って異なりますよね。
その値が次回の商品仕入れや調達で参考にされたり…そんな使い方。)
#SQLでユニーク数を集計する
こんな売上明細があるとします。
PRODUCT_ID「0000001」の単なる"購入者数"は5ですが、
CUSTOMER_IDをよく見ると「100010」「100020」「100030」の3名に購入されているので、"購入者ユニーク数"は3です。
SELECT
PRODUCT_ID,
SUM(QUANTITY), --①個数
COUNT(DISTINCT CUSTOMER_ID) --②ユニーク人数
FROM
URIAGE_MEISAI
GROUP BY
PRODUCT_ID
#Excelでユニーク数を集計する
SQLだったら秒ですが、Excelではちょっと工夫します。作業列(列名:NUM)を作り、集計したい列(CUSTOMER_ID)に対して、COUNTIFした逆数を入れてオートで下まで入力。
=1/COUNTIF(F$2:F$11,F2)
すると、こうなります。
あとは、行に「PRODUCT_ID」・値に「合計/NUM」「合計/QUANTITY」を入れて、ピボットします。
他にやり方が思いつかなかったので、これでSQLの結果と比較してテストしてます。もっと良い方法あったら優しく教えて……