Как посчитать Share of Wallet в SQL

Закрепи формулу share of wallet в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать share of wallet в Telegram

Зачем Share of Wallet

Юзер тратит на доставку еды $200/мес. Из них $50 — наш сервис, $150 — конкуренты. Наш Share of Wallet = 25%. Цель — увеличить.

Формула

Share of Wallet = customer_spend_with_us / customer_total_category_spend × 100%

Базовый расчёт

Данные: customer_spend(user_id, total_spend_category) (survey / external data).

WITH spend AS (
    SELECT
        u.user_id,
        SUM(o.total) AS our_spend,
        s.estimated_category_spend
    FROM users u
    JOIN orders o ON o.user_id = u.user_id
    JOIN customer_surveys s ON s.user_id = u.user_id
    WHERE o.status = 'paid'
      AND o.created_at >= CURRENT_DATE - INTERVAL '90 days'
    GROUP BY u.user_id, s.estimated_category_spend
)
SELECT
    user_id,
    our_spend,
    estimated_category_spend,
    our_spend::NUMERIC * 100 / NULLIF(estimated_category_spend, 0) AS share_of_wallet_pct
FROM spend;

По сегментам

SELECT
    u.segment,
    COUNT(*) AS users,
    AVG(s.our_spend) AS avg_spend_with_us,
    AVG(s.estimated_category_spend) AS avg_category_spend,
    AVG(s.our_spend::NUMERIC / NULLIF(s.estimated_category_spend, 0)) * 100 AS avg_sow_pct
FROM users u
JOIN (
    SELECT
        u.user_id,
        SUM(o.total) AS our_spend,
        cs.estimated_category_spend
    FROM users u
    JOIN orders o ON o.user_id = u.user_id
    JOIN customer_surveys cs ON cs.user_id = u.user_id
    WHERE o.status = 'paid'
    GROUP BY u.user_id, cs.estimated_category_spend
) s ON s.user_id = u.user_id
GROUP BY u.segment
ORDER BY avg_sow_pct DESC;
Закрепи формулу share of wallet в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать share of wallet в Telegram

Источники данных

External wallet data:

  1. Survey: «Сколько вы тратите на доставку еды в месяц?»
  2. Banking transactions: если есть partnership с банком, видно spend на конкурентов.
  3. Estimation models: по demographic + activity patterns.

Частые ошибки

Ошибка 1. Survey bias. Юзеры могут underreport spend на конкурентов. Inflate Share of Wallet.

Ошибка 2. Outdated category estimate. Survey 2-year ago — wrong сейчас.

Ошибка 3. Heavy users skew. Avg SoW dominated by power users.

Ошибка 4. Категорийный mismatch. «Food delivery» — наш конкурент или ресторан напрямую? Зависит от business model.

Ошибка 5. Privacy. Banking data — sensitive. Need consent.

Связанные темы

FAQ

Какой Share of Wallet ok?

Зависит от категории + nature business. 30-50% — strong. 70%+ — dominant.

Можно ли мерить без external data?

Сложно. Survey — ближе всего. ML estimation models — proxy.

Share of Wallet vs Share of Voice?

Wallet — actual spend share. Voice — media presence share.

Share of Wallet падает?

Either конкуренты захватили часть, либо total category выросла больше, чем вы.

Cross-product SoW?

Banking — wallet by service: «Из total банк-spend, ваш share?». Marketplace — spend on category.