Как посчитать Share of Wallet в SQL
Содержание:
Зачем 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;Источники данных
External wallet data:
- Survey: «Сколько вы тратите на доставку еды в месяц?»
- Banking transactions: если есть partnership с банком, видно spend на конкурентов.
- 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.
Связанные темы
- Как посчитать LTV в SQL
- Как посчитать frequency в SQL
- Как посчитать AOV в SQL
- Share of Voice (SOV) в SQL
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.