CONCEPT
データ活用診断
データ基盤構築
トチカチ
マイグル
採用情報
SERVICE
home

集計値の集計を行う際には集計順序に注意せよ | 実践から学ぶ分析の落とし穴

AUTHOR :   ギックス

3.6k
ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

指標の定義を正しくとらえ、正しい順序で集計を行おう

本記事は、同じような集計でも、集計順序を間違えると、計算は合っているけど、意図とは違う数値が集計されてしまうということについて説明します。

ある月の「1人当りの売上」を集計するには?

graffeサービスでは、小売業などが保有するPOSデータ(POSデータについてはコチラの記事を参照ください)のトランザクションデータから分析を開始します。最初は、「売上」「客数」「点数」などの“超”基本となる指標を、店舗別などの軸で確認し、次に、“超”基本指標の「売上」「客数」「点数」を相互に除算した指標(例えば、「1人当りの売上=売上/客数」や「1品当りの単価=売上/点数」など)を確認することになります。
この“超”基本指標を集計する作業は、全レコードを合計するだけの単純な作業ですが、この“超”基本指標から、たった一歩だけ進むだけでも、集計の難度は一段上がり、何も考えずに集計してしまうと、集計ミスが発生する可能性が高くなります。

SUM(A)/COUNT(B)?AVG(SUM(A)/COUNT(B))?

実際にどんなことが起きるのか、分析のある1日のやり取りを見ながら、どこが問題なのかを考えてみて下さい。
Aさん「B君、スーパーマーケットX店の8月の1か月間のお客様1人当りの売上金額を出してみて」
B君「わかりました。ええと、SQLはこうかな…?」

SELECT AVG ( TANKA )
FROM (
SELECT
KAIKEI_DATE,
SUM ( SALES ) / COUNT ( DISTINCT MEMBER_ID ) AS TANKA
FROM SALES
WHERE
SHOP_NAME = ‘X店’
AND KAIKEI_DATE BETWEEN ‘2015-08-01’ AND ‘2015-08-31’
GROUP BY
KAIKEI_DATE
)

皆様、既にお気づきかもしれませんが、B君のSQLには間違えているところがあります。なお、慎重なAさんはC君にも同じ作業を依頼していました。
Aさん「C君、B君にもお願いしたんだけど、確認の意味も込めて、C君もスーパーマーケットX店の8月1か月間でのお客様1人当りの売上金額を出してみてもらえるかな」
C君「分かりました!えっと、SQLは…」

SELECT URIAGE / RAITEN AS TANKA
FROM (
SELECT
COUNT ( DISTINCT MEMBER_ID ) AS RAITEN,
SUM ( SALES ) AS URIAGE
FROM SALES
WHERE
SHOP_NAME = ‘X店’
AND KAIKEI_DATE BETWEEN ‘2015-08-01’ AND ‘2015-08-31’
)

分かりやすい例のため、お気づきの方も多いでしょう。1人当りの売上を出す時には、売上を合計(SUM)してそれを会員数で割らないといけません。B君は先に売上金額を会員数で除算した値を計算してしまい、その値を平均するということを行ってしまった結果、「日別の1人当りの売上の8月月間平均」を求めてしまいました。
この状況からB君を「ミスを犯した」と責めるだけで終わってしまっては勿体ないです。Aさん、B君、C君の認識が違うことが引き起こした問題だったといえます。Aさんは、作業を依頼する際に、どのような集計手順で集計するか確認しておく必要がありました。

集計順序の違う2つの値の違いから気づきが生まれることも!

先の例とは逆に先に集計した後に、平均値を算出することが有効な場合があります。例えば、ある月のすべての会計における会員の会計の割合を求める場合、2通りの考え方ができます。

  1. ある月の会員の会計数 / ある月の全会計数
  2. (ある日の会員の会計数 / ある日の全会計数)の平均値

普通に考えれば、1の値を思いつくでしょう。2の値は、集計値の平均であるため、日ごとの会計数の重みを考えていない値になります。もし、会員が多く利用した日があれば、そのデータに引っ張られ、1の集計値と、2の集計値がかい離するでしょう。この2つの集計値の違いから、新たな気づきを得ることができるでしょう(例えば、月曜日は会員の会計が集中する、など)。

集計値に集計を重ねるときは立ち止まって考えよう

結局のところ、「どんな分析をするのか」「求められたアウトプットに対して、このSQL(や計算式)は正しく算出できているのか」をしっかりと最初の段階で考えられているのかが大切なポイントになります。
分析レポートの作成者と示唆を解釈する人が分かれているようなケースでは、後者の人のやりたいことに従って、前者がアドホックにレポートを作り直していくことになるでしょう。そのような状況下で、ちゃんとどの順で集計を行っているかを把握していなければ、間違えた値が集計されることになります。指標に込められた意味を理解した上で集計順序を定義しましょう。

RECOMMEND
SERVICE