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

45. Доля заказов, доставленных в ПВЗ в срок

Средняя

В deliveries у заказа есть обещанная дата promised_date и момент приезда в пункт выдачи arrived_at. Если заказ так и не приехал, arrived_at равен NULL — такой заказ считается опоздавшим.

Заказ приехал в срок, если arrived_at не позже конца обещанного дня (например, 21:40 в обещанный день — в срок).

Для заказов с обещанной датой в декабре 2025 года верните по городам ПВЗ: city, orders, on_time, on_time_pct — процент с одним знаком. Порядок — от худшего города к лучшему по on_time_pct, при равенстве — по city.

В работе: Еженедельный разбор логистики: в каких городах обещание срока не выполняется.

Таблицы

pvz — пункты выдачи

КолонкаТипЧто значит
pvz_idintключ
citytextгород
addresstextадрес

deliveries — доставки заказов в ПВЗ

КолонкаТипЧто значит
order_idintключ
pvz_idintпункт выдачи
promised_datedateобещанная дата
arrived_attimestampприезд в ПВЗ, NULL — не приехал

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

pvz · 3 строки

pvz_idcityaddress
1Самараул. Ново-Садовая, 106
2СамараМосковское ш., 41
3Томскпр. Ленина, 80

deliveries · 6 строк

order_idpvz_idpromised_datearrived_at
112025-12-032025-12-02T14:00:00
212025-12-032025-12-04T09:00:00
322025-12-052025-12-05T11:00:00
432025-12-102025-12-09T10:00:00
532025-12-102025-12-12T10:00:00
632025-12-112025-12-11T08:00:00

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

cityorderson_timeon_time_pct
Самара3266,7
Томск3266,7
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city, orders, on_time, on_time_pct
условная агрегациядатыNULLJOIN

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

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