Retention: как считать, виды, SQL-запрос и интерпретация — new-lvl.pro
new-lvl.pro · Статьи · Метрики
Статья // 12 мин чтения

Retention:
как считать, виды
и интерпретация

Полный разбор самой важной продуктовой метрики — от формул и SQL-запросов до когортных таблиц и кейсов на собеседовании в BigTech.

Что такое Retention и почему это метрика №1

Retention — это доля пользователей, которые вернулись в продукт через определённое время после первого визита (или другого ключевого действия). Если из 1000 новых пользователей через неделю вернулось 200 — Day-7 Retention равен 20%.

Почему это метрика номер один? Потому что без удержания всё остальное бессмысленно. Можно привлечь миллион пользователей, но если они уходят через день — нет ни выручки, ни роста, ни продукта. Retention показывает, нашёл ли продукт свою ценность для пользователя.

// Частая ошибка на собесе
Кандидаты путают Retention и Churn. Retention — доля вернувшихся. Churn — доля ушедших. Это не просто «100% минус Retention» — в зависимости от метода подсчёта они могут считаться по-разному.

Зачем Retention продуктовому аналитику

Оценка product-market fit — если пользователи возвращаются, продукт решает их задачу
Оценка фич — выпустили новый онбординг? Смотрим, вырос ли retention когорты
Прогнозирование LTV — retention напрямую определяет, сколько пользователь принесёт денег
Аргументация решений — «фича увеличила Day-7 Retention на 3 пп» — это язык, который понимает бизнес

Classic, Rolling, Range — какой бывает Retention

Существует несколько способов считать Retention. Они дают разные числа для одних и тех же данных — и это нормально. Важно понимать, какой тип подходит для вашей задачи.

Classic Retention
Day-N Retention
Пользователь вернулся именно в день N после первого визита. Самый строгий метод — считает только точное попадание в конкретный день.
Day-7 = users_active_on_day_7 / users_in_cohort
Rolling Retention
Day-N+ Retention
Пользователь вернулся в день N или позже. Более мягкий метод — если пользователь пришёл на 9-й день, он засчитывается в Day-7+.
Day-7+ = users_active_on_day_7_or_later / users_in_cohort
Range Retention
Day-N-to-M Retention
Пользователь вернулся хотя бы раз в период от дня N до дня M. Компромисс между точностью и практичностью.
Week-2 = users_active_day_8_to_14 / users_in_cohort
Full Retention
100%-Retention
Пользователь заходил каждый день от 0 до N. Самый строгий вариант — почти всегда близок к нулю. Используется редко.
Обычно неприменим — только для привычных продуктов

Когда использовать какой тип

Тип Когда использовать Пример продукта
Classic Day-N Стандарт в индустрии. Подходит для ежедневных продуктов с высокой частотой использования Социальные сети, мессенджеры, мобильные игры
Rolling Day-N+ Когда важно знать, остался ли пользователь вообще. Подходит для продуктов с разной частотой E-commerce, маркетплейсы, SaaS
Range (Window) Когда ежедневная гранулярность — шум. Берут недельные или месячные окна B2B-продукты, подписки, Авито
// На собесе
Если вас спрашивают «как посчитать retention» — сначала уточните: какой продукт, какая частота использования, что считаем за «активность». Это покажет, что вы мыслите системно, а не просто знаете формулу.

Стандартные точки измерения

В индустрии устоялись несколько ключевых временных точек. Каждая говорит о разном:

Day-1 Retention
Первое впечатление
Пользователь вернулся на следующий день. Показывает качество первой сессии и онбординга. Если Day-1 низкий — проблема на самом входе.
Day-7 Retention
Недельное удержание
Пользователь всё ещё здесь через неделю. Ключевая точка — показывает, нашёл ли пользователь ценность в продукте. Основная метрика для большинства продуктов.
Day-30 Retention
Месячное удержание
Пользователь вернулся через месяц. Индикатор того, стал ли продукт привычкой. Сильно влияет на LTV и прогноз выручки.
Day-90 Retention
Долгосрочное удержание
Три месяца — это уже «ядро» аудитории. Если retention здесь стабилизировался и не падает — продукт нашёл product-market fit.

SQL-запросы для расчёта Retention

На собеседованиях в BigTech вас попросят написать SQL-запрос для расчёта retention. Ниже — три варианта, от простого к продвинутому.

Запрос 1: Classic Day-N Retention

Самый частый вопрос на собесе: «Посчитайте Day-1 и Day-7 Retention по когортам». Предполагаем таблицу user_activity с полями user_id и activity_date, и таблицу users с полем registration_date.

Classic Day-N Retention PostgreSQL
WITH cohorts AS (
  SELECT
    u.user_id,
    DATE_TRUNC('month', u.registration_date) AS cohort_month
  FROM users u
),
activity AS (
  SELECT DISTINCT
    a.user_id,
    a.activity_date
  FROM user_activity a
)
SELECT
  c.cohort_month,
  COUNT(DISTINCT c.user_id) AS cohort_size,

  -- Day-1 Retention ROUND(100.0 * COUNT(DISTINCT CASE WHEN a.activity_date = c.registration_date + 1 THEN c.user_id END)
    / COUNT(DISTINCT c.user_id), 2) AS day_1_retention,

  -- Day-7 Retention ROUND(100.0 * COUNT(DISTINCT CASE WHEN a.activity_date = c.registration_date + 7 THEN c.user_id END)
    / COUNT(DISTINCT c.user_id), 2) AS day_7_retention,

  -- Day-30 Retention ROUND(100.0 * COUNT(DISTINCT CASE WHEN a.activity_date = c.registration_date + 30 THEN c.user_id END)
    / COUNT(DISTINCT c.user_id), 2) AS day_30_retention

FROM cohorts c
LEFT JOIN activity a ON c.user_id = a.user_id
GROUP BY c.cohort_month
ORDER BY c.cohort_month;
// Разбор логики
Сначала определяем когорту каждого пользователя (месяц регистрации). Потом для каждого проверяем, была ли активность ровно через N дней. COUNT DISTINCT CASE — стандартный паттерн для условной агрегации на собесах.

Запрос 2: Rolling Retention (Day-N+)

Rolling Day-7+ Retention PostgreSQL
SELECT DATE_TRUNC('month', u.registration_date) AS cohort_month,
  COUNT(DISTINCT u.user_id) AS cohort_size,
  ROUND(100.0 * COUNT(DISTINCT CASE WHEN a.activity_date >= u.registration_date + 7 THEN u.user_id END)
    / COUNT(DISTINCT u.user_id), 2) AS rolling_day7_retention
FROM users u
LEFT JOIN (SELECT DISTINCT user_id, activity_date FROM user_activity) a
  ON u.user_id = a.user_id
GROUP BY 1 ORDER BY 1;

Разница с Classic — одно слово: >= вместо =. Мы считаем всех, кто пришёл в день 7 или позже. Число будет выше, чем Classic — и это нормально.

Запрос 3: Полная когортная таблица Retention

Это самый мощный запрос — он строит матрицу «когорта × период», которую потом визуализируют как heatmap. Именно это обычно просят на финальных собесах.

Когортная матрица Retention PostgreSQL
WITH cohorts AS (
  SELECT
    user_id,
    DATE_TRUNC('month', registration_date) AS cohort
  FROM users
),
monthly_activity AS (
  SELECT DISTINCT
    user_id,
    DATE_TRUNC('month', activity_date) AS active_month
  FROM user_activity
),
cohort_data AS (
  SELECT
    c.cohort,
    -- Период: сколько месяцев прошло DATE_PART('month',
      AGE(m.active_month, c.cohort)
    )::INT AS period,
    c.user_id
  FROM cohorts c
  JOIN monthly_activity m ON c.user_id = m.user_id
  WHERE m.active_month >= c.cohort
)
SELECT
  cohort,
  period,
  COUNT(DISTINCT user_id) AS active_users,
  ROUND(100.0 * COUNT(DISTINCT user_id)
    / FIRST_VALUE(COUNT(DISTINCT user_id))
      OVER (PARTITION BY cohort ORDER BY period), 1)
    AS retention_pct
FROM cohort_data
GROUP BY cohort, period
ORDER BY cohort, period;
// Важно на собесе
Не забудьте DISTINCT — без него пользователь, который зашёл 5 раз в день, посчитается 5 раз. Это типичная ошибка, которая сразу бросается в глаза интервьюеру.

Когортная таблица: как читать Retention heatmap

Когортная таблица — это стандартный способ представить retention. По строкам — когорты (месяц регистрации), по столбцам — период (0, 1, 2, 3... месяца после регистрации). В ячейках — процент вернувшихся. Вот пример для e-commerce продукта:

Когорта Месяц 0 Месяц 1 Месяц 2 Месяц 3 Месяц 4 Месяц 5
Янв 2025 100% 42% 28% 21% 18% 16%
Фев 2025 100% 45% 31% 24% 20%
Мар 2025 100% 48% 35% 27%
Апр 2025 100% 50% 37%
Май 2025 100% 47%

Как читать эту таблицу

Три направления чтения дают три разных инсайта:

По строке →
Кривая удержания когорты
Как затухает конкретная когорта со временем. Здоровый паттерн: резкое падение в первый месяц, потом стабилизация. Если падение не прекращается — продукт не нашёл ядро.
По столбцу ↓
Динамика метрики по когортам
Становится ли Retention лучше от когорты к когорте? В нашем примере Month-1 Retention растёт: 42% → 45% → 48% → 50%. Значит, продукт улучшается.
По диагонали ↘
Один момент времени
Все когорты в один конкретный месяц. Полезно, если в какой-то момент произошло событие (баг, маркетинг-кампания, релиз), и нужно увидеть его эффект на всех.
// Признак здорового продукта
Кривая retention выходит на плато. Если после 3–4 месяцев retention стабилизируется на 15–20% — у продукта есть ядро лояльных пользователей. Если retention продолжает падать к нулю — продукт «протекает».

Как интерпретировать Retention: паттерны и ловушки

Паттерн 1: DAU вырос, а Retention упал

Классический кейс на собеседовании. Типичная причина: маркетинг привлёк много нецелевых пользователей. DAU вырос за счёт новых, но они не задерживаются — retention падает. Для диагностики нужно разбить когорту на сегменты по источнику трафика и посмотреть, отличается ли retention между ними.

Паттерн 2: Retention вырос, а Revenue не вырос

Пользователи возвращаются, но не платят. Возможные причины: удержание растёт среди бесплатных пользователей, а платящие ведут себя так же. Или — пользователи возвращаются «лёгким» паттерном (открыл приложение, не совершив целевое действие). Нужно смотреть не просто на «визит», а на качественные действия.

Паттерн 3: Новая когорта хуже предыдущей

Retention падает от когорты к когорте — столбец вниз в таблице. Возможные причины: изменился канал привлечения (пришли менее качественные пользователи), сломался онбординг, сезонность. Первым делом стоит сегментировать по источнику и проверить, не изменился ли микс каналов.

// Ловушка Simpson's paradox
Общий retention может расти, пока retention в каждом сегменте падает — если растёт доля сегмента с изначально высоким retention. Всегда смотрите retention в разрезе сегментов, а не только общий.

Бенчмарки Retention по типам продуктов

Бенчмарки — это ориентиры, а не цели. Они сильно зависят от типа продукта, рынка и стадии. Но знать их полезно, чтобы понимать контекст и адекватно оценивать свои цифры.

Тип продукта Day-1 Day-7 Day-30
Социальные сети 40–60% 25–40% 15–25%
E-commerce / Маркетплейсы 20–30% 10–20% 5–15%
Мобильные игры 30–50% 15–25% 5–10%
SaaS (B2B) 80–95% 70–85% 60–80%
Fintech 25–40% 15–25% 10–20%
// Контекст
B2B SaaS-продукты имеют высокий retention, потому что переключение стоит дорого. Мобильные игры — низкий, потому что конкуренция огромна и барьер входа нулевой. Сравнивайте себя только с продуктами того же типа.

Вопросы про Retention на собесе в BigTech

Retention — тема, которая появляется практически на каждом собеседовании продуктового аналитика. Вот реальные типы вопросов:

🎤 Типичные вопросы
  • Как посчитать Day-7 Retention? Напишите SQL-запрос.
  • В чём разница между Classic Retention и Rolling Retention? Когда что использовать?
  • DAU упал на 15%. Как вы будете разбираться в причинах? Как retention поможет в диагностике?
  • Что такое DAU/MAU ratio и что значит значение 20%? А 60%? Как оно связано с retention?
  • Постройте когортную таблицу Retention для e-commerce. Какие выводы можно сделать?
  • Retention нового онбординга вырос на 3%, но GMV упал на 2%. Запускать или нет?
  • Как отличить реальное улучшение retention от сезонности? Какие данные нужны?
  • У нас маркетплейс. Какой retention считать — для покупателей или для продавцов? Почему?

Как отвечать на кейсовый вопрос про retention

Алгоритм, который работает на собесе:

Фреймворк ответа на кейс
1
Уточните метрику: какой именно retention, за какой период, что считаем за «активность»
2
Определите масштаб: на сколько изменился, когда началось, все пользователи или сегмент
3
Декомпозируйте: разбейте по сегментам — платформа, гео, источник, когорта, тип пользователя
4
Выдвиньте гипотезы: технические (баг, трекинг) → продуктовые (фича, онбординг) → внешние (сезонность, конкурент)
5
Предложите проверку: какие данные посмотрите, какой запрос напишете, что ожидаете увидеть
6
Дайте рекомендацию: что сделать, чтобы починить / улучшить retention, и как измерить эффект

Связанные материалы

Главное про Retention

Retention — не просто одна из метрик, а фундамент всей продуктовой аналитики. Если пользователи не возвращаются — не работают ни привлечение, ни монетизация, ни рост.

На собеседовании в BigTech от вас ждут не только знания формулы, но и умение выбрать правильный тип retention, написать SQL-запрос, построить когортную таблицу и — главное — объяснить, что за цифрами стоит и какие решения они подсказывают.

Следующий шаг: попробуйте написать SQL-запрос для когортного retention на любом открытом датасете (Olist на Kaggle — хороший вариант). Это лучший способ закрепить понимание.

АТ
Андрей Тарасенко
// Продуктовый аналитик · Авито · Ментор

Пришёл в IT в 39 лет из ритейла. Знаю, как тяжело разбираться в метриках, когда вокруг все говорят аббревиатурами. Пишу так, чтобы было понятно — и чтобы реально помогало на собесе.

Написать в Telegram
Made on
Tilda