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

241. Очередь перезвонов по часам: четыре группы задач

Сложная

Задача из тестового Домклик (Сбер). В tasks — задачи колл-центра ипотеки на перезвон клиенту: время создания created_at и закрытия closed_at, у незакрытых он NULL.

Час — полуинтервал [ч:00, ч+1:00). Задача была в очереди в этот час, если создана до его конца и не закрыта до его начала. Каждую такую задачу отнесите к группе cat_no: 1 — создана и закрыта в этот час; 2 — создана раньше, закрыта в этот час; 3 — создана в этот час, к его концу не закрыта; 4 — создана раньше и к концу часа не закрыта.

Ожидание задачи в часе — минуты от created_at до закрытия или до конца часа, смотря что раньше. Для часов 10 ноября 2025 года с 09:00 до 12:00 включительно (четыре часа) верните hour_start, cat_no, tasks, avg_wait_min (до 0,1). Пустые группы не выводите, порядок — hour_start, cat_no.

В работе: Почасовой мониторинг очереди колл-центра: успевают ли операторы разбирать новые заявки или хвост копится.

Таблицы

tasks — одна строка — одна задача на перезвон

КолонкаТипЧто значит
task_idintключ
created_attimestampсоздана
closed_attimestampзакрыта, NULL — в работе

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

tasks · 8 строк

task_idcreated_atclosed_at
12025-11-10T09:05:002025-11-10T09:40:00
22025-11-10T08:50:002025-11-10T09:20:00
32025-11-10T09:30:002025-11-10T10:15:00
42025-11-10T08:00:00NULL
52025-11-10T10:10:00NULL
62025-11-10T07:00:002025-11-10T08:30:00
72025-11-10T11:00:002025-11-10T12:00:00
82025-11-10T13:00:00NULL

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

hour_startcat_notasksavg_wait_min
2025-11-10T09:00:001135
2025-11-10T09:00:002130
2025-11-10T09:00:003130
2025-11-10T09:00:0041120
2025-11-10T10:00:002145
2025-11-10T10:00:003150
2025-11-10T10:00:0041180
2025-11-10T11:00:003160
2025-11-10T11:00:0042175
2025-11-10T12:00:002160
2025-11-10T12:00:0042235
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
hour_start, cat_no, tasks, avg_wait_min
датыJOINNULLусловная агрегация

Источник: тестовое BI-аналитика (Middle) в Домклик (Сбер), сборник No Data No Growth. Условие пересказано своими словами.