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

50. Возвраты покупателей по месячным когортам

Сложная

Когорта покупателя — месяц его первого неотменённого заказа за всю историю. Отменённые заказы (cancelled) не учитываются нигде.

Для когорт января, февраля и марта 2026 года верните cohort — первый день месяца (date), users — размер когорты, m1_pct и m2_pct — процент покупателей когорты с неотменённым заказом ровно в следующем и через один месяц после месяца когорты, с одним знаком. Порядок — по cohort.

В работе: Когортный отчёт: удерживает ли маркетплейс новых покупателей после первой покупки.

Таблицы

orders — заказы

КолонкаТипЧто значит
order_idintключ
user_idintпокупатель
created_attimestampвремя
statustextcreated / delivered / cancelled

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

orders · 10 строк

order_iduser_idcreated_atstatus
112026-01-05T10:00:00delivered
212026-02-11T10:00:00delivered
312026-03-02T10:00:00delivered
422026-01-20T10:00:00delivered
522026-01-28T10:00:00delivered
632026-01-31T23:59:00delivered
732026-03-01T00:00:00delivered
842026-02-14T12:00:00delivered
942026-03-14T12:00:00delivered
1052026-02-20T12:00:00delivered

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

cohortusersm1_pctm2_pct
2026-01-01333,366,7
2026-02-012500
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
cohort, users, m1_pct, m2_pct
когортыретеншнCTELEFT JOINдаты

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

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