Войти Регистрация
Data base

93. Продление Плюса по когортам первого месяца

Средняя

В payments — оплаты подписки: пользователь платит раз в месяц, но бывают повторные списания (смена карты, возврат и новая оплата).

Когорта пользователя — календарный месяц его первой оплаты. Пользователь удержан, если платил хотя бы раз в следующем календарном месяце.

Для каждой когорты верните cohort_month (первое число месяца), users, retained и retention_pct с одним знаком. Порядок по cohort_month.

В работе: Еженедельный отчёт по удержанию подписчиков после первого месяца.

Таблицы

payments — одна строка — одно списание

КолонкаТипЧто значит
payment_idintключ
user_idintпользователь
paid_attimestampвремя списания
amount_rubnumericсумма, ₽

Пример: данные

payments · 9 строк

payment_iduser_idpaid_atamount_rub
112026-01-05T10:00:00399
212026-02-05T10:00:00399
322026-01-20T12:00:00399
432026-01-31T23:00:00399
532026-02-28T23:00:00399
642026-02-10T09:00:00399
742026-03-10T09:00:00399
852026-02-14T18:00:00399
922026-03-20T12:00:00399

Ожидаемый ответ

cohort_monthusersretainedretention_pct
2026-01-013266,7
2026-02-012150
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
cohort_month, users, retained, retention_pct
когортыретеншндатыLEFT JOINDISTINCT

Источник: на данных подписки Плюс: оплаты. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.