Как посчитать D0 revenue в SQL
Содержание:
Зачем D0 revenue
D0 revenue = выручка от юзера в день установки. Используется для:
- ранней оценки качества трафика (paid vs organic)
- проверка трендов до D7/D30 LTV
- быстрая reaction на bad ad creatives
В gaming D0 monetization обычно 1-3% юзеров платят сразу. SaaS — почти 0 (trial-период).
Формула
D0_revenue = revenue в день install
ARPI = total D0 revenue / total installsARPI (Average Revenue Per Install) — стандарт metric в mobile.
D0 в SQL
WITH installs AS (
SELECT user_id, install_date::DATE AS install_date
FROM app_installs
WHERE install_date >= CURRENT_DATE - INTERVAL '30 days'
),
d0_revenue AS (
SELECT
i.user_id,
i.install_date,
COALESCE(SUM(r.amount), 0) AS d0_rev
FROM installs i
LEFT JOIN revenue_events r
ON r.user_id = i.user_id
AND r.event_date::DATE = i.install_date
GROUP BY i.user_id, i.install_date
)
SELECT
install_date,
COUNT(*) AS installs,
SUM(d0_rev) AS total_d0_revenue,
AVG(d0_rev) AS arpi_d0,
COUNT(*) FILTER (WHERE d0_rev > 0)::NUMERIC * 100 / COUNT(*) AS pct_paying_d0
FROM d0_revenue
GROUP BY install_date
ORDER BY install_date;ARPI растёт = улучшение monetization. Падает = trip-up.
По каналу
SELECT
u.utm_source AS channel,
COUNT(*) AS installs,
AVG(d0_rev) AS arpi_d0,
COUNT(*) FILTER (WHERE d0_rev > 0)::NUMERIC / COUNT(*) AS d0_payer_rate
FROM d0_revenue d
JOIN users u USING (user_id)
WHERE install_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY u.utm_source
HAVING COUNT(*) >= 100
ORDER BY arpi_d0 DESC;Канал с high ARPI — больше платящих с первого дня. Часто organic install higher ARPI чем paid.
D0 vs D7 vs D30
SELECT
u.utm_source,
AVG(d0_rev) AS arpi_d0,
AVG(d7_rev) AS arpu_d7,
AVG(d30_rev) AS arpu_d30,
AVG(d30_rev / NULLIF(d0_rev, 0)) AS d30_to_d0_multiplier
FROM cohort_revenue
JOIN users u USING (user_id)
WHERE install_date BETWEEN CURRENT_DATE - INTERVAL '60 days' AND CURRENT_DATE - INTERVAL '30 days'
GROUP BY u.utm_source
ORDER BY arpu_d30 DESC;D30 / D0 ratio высокий = users grow in monetization после first day. Низкий = good D0 monetization, но без growth.
Частые ошибки
Ошибка 1. Считать D0 как day 1, не day 0. Day 0 = install date. Day 1 = next calendar day. Convention важна.
Ошибка 2. Timezone-чувствительность. Install ночью UTC, revenue в утро local — могут быть разные days. Standardize.
Ошибка 3. Включать refunds in real-time. Refund от D0 transactions может прийти через дни. Считайте net D0.
Ошибка 4. Не сегментировать по платформе. iOS пользователи обычно ARPI 2-3× выше Android.
Ошибка 5. Считать ARPI = revenue / paying users. Это ARPPU (Average Revenue Per Paying User), не ARPI. ARPI делит на ВСЕХ.
Связанные темы
- Как посчитать ARPDAU в SQL
- Как посчитать ARPPU в SQL
- Как посчитать LTV в SQL
- Как посчитать CAC по каналам в SQL
FAQ
D0 для SaaS имеет смысл?
Меньше — trial freemium. Для freemium app — yes.
Какой ARPI хороший?
Gaming: $0.10-2.00. Subscription apps: $0.01-0.30 (rest comes later).
D0 как качество трафика?
Yes — быстрый proxy на quality. Но не sole metric, важен D30 LTV.
Include trial revenue?
Trial не плата. Считайте только real charges.
Можно ли в чистом SQL?
Да. Mobile измерительные платформы (Adjust, AppsFlyer) данные тоже выгрузить и считать.