青の統計学-DS Playground-

指標定義: 売上、CVR、継続率をそろえる

Stage 5 — 第1章 | データ分析基礎カリキュラム 推定学習時間:30〜40分 | 難易度:★★★☆☆


この章で学ぶこと

同じ「売上」や「CVR」という言葉でも、チームやレポートによって定義が違うことがあります。 定義がそろっていないと、SQLが正しくても意思決定がずれてしまいます。

この章では、分析の土台になる 指標定義 を学びます。

この章を終えると、こんなことができるようになります:

  • 売上、CVR、継続率の定義を言葉で説明できる
  • 指標定義に沿ってSQLを書ける
  • 分母と分子を確認する習慣を持てる
  • レポート前に定義を共有する重要性を理解できる

1. 指標は名前だけでは決まらない

「売上」と聞くと簡単に見えますが、実務では確認すべき点があります。

確認点
対象注文 completed のみか、キャンセルも含めるのか
金額 税込か税抜か、送料を含むか
期間 注文日基準か、決済日基準か
粒度 注文単位か、商品明細単位か

このカリキュラムでは、例として「完了注文の total_amount 合計」を売上とします。

SELECT
            SUM(total_amount) AS sales
          FROM orders
          WHERE status = 'completed';
          

重要なのは、この定義をSQLだけでなく言葉でも説明できることです。


2. 売上の定義をそろえる

商品カテゴリ別の売上を見る場合は、注文ではなく明細と商品を結合します。

SELECT
            p.category,
            SUM(oi.quantity * oi.unit_price) AS sales
          FROM order_items AS oi
          JOIN products AS p
            ON oi.product_id = p.product_id
          GROUP BY p.category
          ORDER BY sales DESC;
          

一方、orders.total_amount を使う売上とは粒度が違います。 明細金額の合計と注文合計が一致する前提なのか、割引や送料がどこに入っているのかを確認します。

同じ「売上」でも、注文テーブル基準と明細テーブル基準では意味が変わることがあります。


3. CVRは分母と分子が重要

CVRは、ある行動に進んだ割合です。 ECでは「登録顧客のうち購入した顧客の割合」と定義できます。

WITH customer_order_counts AS (
            SELECT
              customer_id,
              COUNT(*) AS completed_order_count
            FROM orders
            WHERE status = 'completed'
            GROUP BY customer_id
          ),
          base AS (
            SELECT
              COUNT(DISTINCT c.customer_id) AS registered_customers,
              COUNT(DISTINCT CASE
                WHEN o.completed_order_count >= 1 THEN c.customer_id
              END) AS purchased_customers
            FROM customers AS c
            LEFT JOIN customer_order_counts AS o
              ON c.customer_id = o.customer_id
          )
          SELECT
            registered_customers,
            purchased_customers,
            purchased_customers * 1.0 / registered_customers AS purchase_cvr
          FROM base;
          

このCVRの分母は登録顧客数、分子は購入顧客数です。 「訪問者から購入者」なのか「登録者から購入者」なのかで、数値は大きく変わります。


4. 継続率を定義する

継続率も、定義がぶれやすい指標です。 ここでは「初回購入した顧客のうち、2回以上購入した顧客の割合」と定義します。

WITH customer_order_counts AS (
            SELECT
              customer_id,
              COUNT(*) AS completed_order_count
            FROM orders
            WHERE status = 'completed'
            GROUP BY customer_id
          )
          SELECT
            COUNT(CASE WHEN completed_order_count >= 1 THEN 1 END) AS first_buyers,
            COUNT(CASE WHEN completed_order_count >= 2 THEN 1 END) AS repeat_buyers,
            COUNT(CASE WHEN completed_order_count >= 2 THEN 1 END) * 1.0
              / COUNT(CASE WHEN completed_order_count >= 1 THEN 1 END) AS repeat_rate
          FROM customer_order_counts;
          

この定義は分かりやすい一方で、購入間隔は考慮していません。 「30日以内に再購入した顧客」など、時間条件を入れる場合は別の定義になります。


5. 指標定義を残す

実務では、SQLと一緒に指標定義を残しておくことが重要です。

指標 定義例
売上 status = 'completed' の注文金額合計
購入CVR 登録顧客のうち、完了注文が1件以上ある顧客の割合
継続率 完了注文が1件以上ある顧客のうち、2件以上ある顧客の割合

指標の名前、分母、分子、除外条件、対象期間を明記すると、チーム内で同じ数字を見られるようになります。


実務での使いどころ: 指標の名前だけで合意しない

「売上」「CVR」「継続率」のような指標名は、チーム内で同じ意味に見えても、実は定義が違うことがあります。 指標定義をそろえずにダッシュボードを作ると、会議のたびに数字の解釈で揉めます。

指標名 定義で確認すること
売上 税込/税抜、送料、返品、キャンセルの扱い
CVR 分母、分子、対象期間
継続率 初回利用日、継続判定期間、休眠の扱い
購入者数 重複購入者を1人と数えるか

指標定義は、SQLを書く前の仕様書です。 定義が明確なら、SQLレビューもダッシュボード運用も楽になります。

指標名: 完了注文売上
          分子: status = 'completed' の total_amount 合計
          除外: cancelled / test 注文
          期間: order_date ベース
          更新頻度: 日次
          

この程度のメモでも、分析の再現性は大きく上がります。

ミニ演習

次の指標について、定義に必要な項目を考えてください。

  1. 売上。
  2. 購入率。
  3. リピート率。
  4. 平均注文金額。

まとめ

指標 確認すること
売上 対象注文、金額列、期間基準
CVR 分母と分子のユーザー範囲
継続率 継続の条件と期間
共通点 SQLを書く前に定義を言葉でそろえる

この章のキーメッセージ: 指標は名前ではなく定義で決まります。売上、CVR、継続率を扱うときは、分母・分子・対象条件を明確にしてからSQLを書きましょう。


この章の確認

  1. 「売上」の定義で確認すべき点を2つ挙げてください。
  2. CVRで分母と分子が重要な理由を説明してください。
  3. 「初回購入者のうち2回以上購入した顧客の割合」は、どのような指標ですか?
  4. 指標定義をSQLと一緒に残すメリットを説明してください。

関連演習