**Контекст:** Задание с технического собеса на senior-аналитика. Нужно собрать **когортную таблицу retention по неделям** — базовый инструмент продуктовой аналитики.
**Данные:**
[см. код в задании]
**Определения:**
- **Когорта** = пользователи, зарегистрировавшиеся в одну неделю (`event_type = 'signup'`)
- **Активность** = любой `login` или `purchase` от этого пользователя в будущем
- **Retention Wk** = доля юзеров когорты, которые были активны **на k-й неделе** после регистрации
**Задание:**
Собрать таблицу вида:
| cohort_week | size | W0 | W1 | W2 | W3 | W4 |
|-------------|------|------|------|------|------|------|
| 2026-02-02 | 1200 | 100% | 42% | 28% | 22% | 20% |
| 2026-02-09 | 1400 | 100% | 45% | 30% | — | — |
- W0 всегда 100% (неделя регистрации).
- Если данных ещё нет (когорта слишком молодая для Wk) — NULL.
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE user_events (
user_id BIGINT,
event_ts TIMESTAMP,
event_type VARCHAR(32) -- 'signup', 'login', 'purchase', ...
);
cohort-analysis retention window-functions pivot DATE_TRUNC
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: cohort-analysis, retention, window-functions, pivot, DATE_TRUNC.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 520+ SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания