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

203. Выдачи и возвраты по каждому ПВЗ за октябрь

Лёгкая

В pvz — пункты выдачи, в parcels — посылки, которые туда приехали. status: issued — выдана, returned — не забрали и отправили обратно, waiting — лежит на полке.

Для каждого ПВЗ из pvz посчитайте посылки, приехавшие в октябре 2025 (по arrived_at): issued, returned, waiting. ПВЗ без октябрьских посылок тоже выводите — с нулями, не NULL. Порядок — по pvz_id.

В работе: Еженедельная сводка для менеджера сети ПВЗ: где копятся невыкупы.

Таблицы

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

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

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

КолонкаТипЧто значит
parcel_idintключ
pvz_idintПВЗ
statustextissued / returned / waiting
arrived_atdateдень приезда в ПВЗ

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

pvz · 3 строки

pvz_idcityaddress
1Тулаул. Болдина, 98
2Тулапр. Ленина, 41
3Рязаньул. Есенина, 13

parcels · 6 строк

parcel_idpvz_idstatusarrived_at
11issued2025-10-02
21issued2025-10-05
31returned2025-10-07
41waiting2025-10-30
52issued2025-10-11
63issued2025-09-28

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

pvz_idissuedreturnedwaiting
1211
2100
3000
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
pvz_id, issued, returned, waiting
LEFT JOINусловная агрегацияNULLдаты

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