RFM-сегментация клиентов

Middle SQL E-commerce

Условие задания

**Контекст:** Реальный запрос от CRM-маркетолога крупного онлайн-ритейлера. Нужно разбить клиентов на сегменты по **RFM-модели** — Recency (давность), Frequency (частота), Monetary (сумма).

**Данные:**

[см. код в задании]

Рассматриваем только `status = 'completed'`.

**Задание:**

1. Для каждого пользователя посчитать:
- `recency_days` — сколько дней прошло с последней покупки (от сегодня)
- `frequency` — число заказов за весь период
- `monetary` — сумма трат
2. Разбить юзеров на **квинтили** (5 корзин) по каждому измерению:
- R: **5** = самые свежие, **1** = давно не покупали
- F: **5** = чаще всего, **1** = редко
- M: **5** = больше всех тратят, **1** = мало
3. Присвоить «сегмент» по правилу:
- `R >= 4 AND F >= 4 AND M >= 4` → **"champions"** (топ-клиенты)
- `R >= 4 AND F <= 2` → **"new_customers"**
- `R <= 2 AND F >= 4` → **"at_risk"** (лояльные, но уходят)
- `R <= 2 AND F <= 2` → **"lost"**
- остальные → **"regular"**

**Ожидаемые колонки:** `user_id, R, F, M, segment`

Темы

NTILE segmentation RFM CRM window-functions

Подсказки

Все тестовые задания → ← Все задания