В orders — заказы с временем оформления created_at и статусом. Отменённые заказы (cancelled) в расчёте не участвуют, в том числе как соседние.
Для клиентов, у которых не меньше трёх неотменённых заказов, верните user_id, orders — их число и avg_gap_days — среднюю паузу между соседними заказами в днях (дробно, с одним знаком; сутки = 24 часа). Порядок — по avg_gap_days, затем по user_id.
В работе: Частота покупок для прогноза: когда клиенту напомнить о себе.
Таблицы
orders — заказы
| Колонка | Тип | Что значит |
|---|---|---|
order_id | int | ключ |
user_id | int | клиент |
created_at | timestamp | время оформления |
status | text | created / delivered / cancelled |
Пример: данные
orders · 9 строк
| order_id | user_id | created_at | status |
|---|---|---|---|
| 1 | 51 | 2025-11-01T10:00:00 | delivered |
| 2 | 51 | 2025-11-05T10:00:00 | delivered |
| 3 | 51 | 2025-11-15T22:00:00 | delivered |
| 4 | 52 | 2025-11-02T09:00:00 | delivered |
| 5 | 52 | 2025-11-03T09:00:00 | delivered |
| 6 | 52 | 2025-11-04T21:00:00 | delivered |
| 7 | 52 | 2025-11-08T09:00:00 | delivered |
| 8 | 53 | 2025-11-01T12:00:00 | delivered |
| 9 | 53 | 2025-11-20T12:00:00 | delivered |
Ожидаемый ответ
| user_id | orders | avg_gap_days |
|---|---|---|
| 52 | 4 | 2 |
| 51 | 3 | 7,3 |
Как проверяем
Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, orders, avg_gap_days
Источник: на данных Ozon: заказы покупателей. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.