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

46. Средний интервал между заказами клиента

Средняя

В orders — заказы с временем оформления created_at и статусом. Отменённые заказы (cancelled) в расчёте не участвуют, в том числе как соседние.

Для клиентов, у которых не меньше трёх неотменённых заказов, верните user_id, orders — их число и avg_gap_days — среднюю паузу между соседними заказами в днях (дробно, с одним знаком; сутки = 24 часа). Порядок — по avg_gap_days, затем по user_id.

В работе: Частота покупок для прогноза: когда клиенту напомнить о себе.

Таблицы

orders — заказы

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

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

orders · 9 строк

order_iduser_idcreated_atstatus
1512025-11-01T10:00:00delivered
2512025-11-05T10:00:00delivered
3512025-11-15T22:00:00delivered
4522025-11-02T09:00:00delivered
5522025-11-03T09:00:00delivered
6522025-11-04T21:00:00delivered
7522025-11-08T09:00:00delivered
8532025-11-01T12:00:00delivered
9532025-11-20T12:00:00delivered

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

user_idordersavg_gap_days
5242
5137,3
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, orders, avg_gap_days
оконные функцииGROUP BYHAVINGдаты

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

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