Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Retention Rate и Churn Rate: Метрики Удержания
Retention Rate (коэффициент удержания) и Churn Rate (коэффициент оттока) — это две взаимодополняющие метрики, характеризующие способность компании удерживать пользователей или клиентов. Они критичны для оценки здоровья и прибыльности бизнеса.
Retention Rate (Коэффициент Удержания)
Retention Rate — это процент пользователей, которые остались активными после определённого периода времени. Высокий retention означает, что продукт хорошо удовлетворяет потребности пользователей.
Основная формула:
Retention Rate = (Пользователи на конец периода - Новые пользователи) / Пользователи на начало периода × 100%
SQL-запрос для расчёта Day-7 Retention (удержание через 7 дней):
WITH cohort_data AS (
SELECT
DATE(first_event_date) as cohort_date,
user_id
FROM users
WHERE first_event_date >= DATE_TRUNC(day, CURRENT_DATE) - INTERVAL 30 day
),
retention_events AS (
SELECT
c.cohort_date,
c.user_id,
MAX(CASE WHEN e.event_date >= c.cohort_date + INTERVAL 7 day
THEN 1 ELSE 0 END) as retained_day_7
FROM cohort_data c
LEFT JOIN events e ON c.user_id = e.user_id
GROUP BY c.cohort_date, c.user_id
)
SELECT
cohort_date,
COUNT(*) as cohort_size,
SUM(retained_day_7) as retained_count,
ROUND(100.0 * SUM(retained_day_7) / COUNT(*), 2) as retention_rate_pct
FROM retention_events
GROUP BY cohort_date
ORDER BY cohort_date DESC;
Churn Rate (Коэффициент Оттока)
Churn Rate — это процент пользователей или клиентов, прекративших использование продукта или отменивших подписку в течение определённого периода. Это зеркальное отражение retention.
Основная формула:
Churn Rate = (Потеренные пользователи за период) / (Пользователи на начало периода) × 100%
Churn Rate = 100% - Retention Rate
SQL-запрос для расчёта Monthly Churn:
WITH monthly_cohorts AS (
SELECT
TO_CHAR(DATE_TRUNC(month, first_event_date), YYYY-MM) as cohort_month,
COUNT(DISTINCT user_id) as cohort_size
FROM users
GROUP BY cohort_month
),
active_users AS (
SELECT
TO_CHAR(DATE_TRUNC(month, u.first_event_date), YYYY-MM) as cohort_month,
TO_CHAR(DATE_TRUNC(month, e.event_date), YYYY-MM) as active_month,
COUNT(DISTINCT u.user_id) as active_count
FROM users u
LEFT JOIN events e ON u.user_id = e.user_id
GROUP BY cohort_month, active_month
)
SELECT
c.cohort_month,
c.cohort_size,
COALESCE(a.active_count, 0) as active_next_month,
ROUND(100.0 * (c.cohort_size - COALESCE(a.active_count, 0)) / c.cohort_size, 2) as churn_rate_pct
FROM monthly_cohorts c
LEFT JOIN active_users a ON c.cohort_month = a.cohort_month
AND TO_CHAR(DATE_TRUNC(month, DATE(c.cohort_month || -01) + INTERVAL 1 month), YYYY-MM) = a.active_month
ORDER BY c.cohort_month DESC;
Ключевые Различия
| Аспект | Retention Rate | Churn Rate |
|---|---|---|
| Определение | % оставшихся пользователей | % потеренных пользователей |
| Формула | (Осталось / Было) × 100% | 100% - Retention |
| Цель | Увеличить | Снизить |
| Трактовка | Выше = лучше | Ниже = лучше |
Когортный Анализ
Обе метрики часто рассчитываются по когортам — группам пользователей, присоединившихся в один период. Когортный анализ показывает, как удержание меняется в зависимости от времени присоединения:
SELECT
DATE_TRUNC(week, u.first_event_date)::DATE as signup_week,
(e.event_date - u.first_event_date)::INT / 7 as days_since_signup,
COUNT(DISTINCT u.user_id) as users
FROM users u
JOIN events e ON u.user_id = e.user_id
WHERE u.first_event_date >= CURRENT_DATE - INTERVAL 90 day
GROUP BY signup_week, days_since_signup
ORDER BY signup_week DESC, days_since_signup;
Практическое Применение
- Диагностика проблем — низкий retention указывает на проблемы с продуктом
- Планирование роста — высокий churn требует больше новых пользователей для роста
- ROI маркетинга — retention важнее для долгосрочной прибыльности, чем количество новых пользователей
- Оптимизация — когортный анализ помогает найти точки отваливания
Метрики retention и churn дают полную картину здоровья продукта и должны постоянно мониторироваться.