指標定義: 売上、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 ベース
更新頻度: 日次
この程度のメモでも、分析の再現性は大きく上がります。
ミニ演習
次の指標について、定義に必要な項目を考えてください。
- 売上。
- 購入率。
- リピート率。
- 平均注文金額。
まとめ
| 指標 | 確認すること |
|---|---|
| 売上 | 対象注文、金額列、期間基準 |
| CVR | 分母と分子のユーザー範囲 |
| 継続率 | 継続の条件と期間 |
| 共通点 | SQLを書く前に定義を言葉でそろえる |
この章のキーメッセージ: 指標は名前ではなく定義で決まります。売上、CVR、継続率を扱うときは、分母・分子・対象条件を明確にしてからSQLを書きましょう。
この章の確認
- 「売上」の定義で確認すべき点を2つ挙げてください。
- CVRで分母と分子が重要な理由を説明してください。
- 「初回購入者のうち2回以上購入した顧客の割合」は、どのような指標ですか?
- 指標定義をSQLと一緒に残すメリットを説明してください。