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

80. Посылки, которые лежат в ПВЗ больше недели

Лёгкая

Отчёт строится на 20 октября 2026 года 00:00. Посылка лежит в ПВЗ, если picked_at и returned_at пустые. Просрочена — если она лежит и пришла раньше 13 октября 2026 года 00:00, то есть хранится больше 7 суток.

Для каждого ПВЗ из pickup_points верните pvz_id, city и overdue — число просроченных посылок, у ПВЗ без них 0. Порядок — по overdue по убыванию, затем по pvz_id.

В работе: Утренний список для менеджера ПВЗ: что пора отправить обратно на склад и освободить ячейки.

Таблицы

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

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

parcels — посылки в ПВЗ

КолонкаТипЧто значит
parcel_idintключ
pvz_idintПВЗ
arrived_attimestampпоступила
picked_attimestampзабрана, NULL — нет
returned_attimestampотправлена обратно, NULL — нет

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

pickup_points · 3 строки

pvz_idcityaddress
1Краснодарул. Северная, 310
2Ростов-на-ДонуВорошиловский пр., 52
3Воронежул. Плехановская, 9

parcels · 7 строк

parcel_idpvz_idarrived_atpicked_atreturned_at
112026-10-05T14:00:00NULLNULL
212026-10-10T09:00:002026-10-12T18:00:00NULL
312026-10-01T11:00:00NULL2026-10-08T20:00:00
412026-10-12T23:59:00NULLNULL
512026-10-13T00:00:00NULLNULL
622026-10-02T16:00:00NULLNULL
732026-10-15T10:00:00NULLNULL

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

pvz_idcityoverdue
1Краснодар2
2Ростов-на-Дону1
3Воронеж0
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
pvz_id, city, overdue
LEFT JOINNULLдатыGROUP BY

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

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