Как посчитать D0 revenue в SQL

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

Зачем 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 installs

ARPI (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.

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

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 делит на ВСЕХ.

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

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) данные тоже выгрузить и считать.