В pvz — пункты выдачи, в parcels — посылки, которые туда приехали. status: issued — выдана, returned — не забрали и отправили обратно, waiting — лежит на полке.
Для каждого ПВЗ из pvz посчитайте посылки, приехавшие в октябре 2025 (по arrived_at): issued, returned, waiting. ПВЗ без октябрьских посылок тоже выводите — с нулями, не NULL. Порядок — по pvz_id.
В работе: Еженедельная сводка для менеджера сети ПВЗ: где копятся невыкупы.
Таблицы
pvz — пункты выдачи
| Колонка | Тип | Что значит |
|---|---|---|
pvz_id | int | ключ |
city | text | город |
address | text | адрес |
parcels — посылки в ПВЗ
| Колонка | Тип | Что значит |
|---|---|---|
parcel_id | int | ключ |
pvz_id | int | ПВЗ |
status | text | issued / returned / waiting |
arrived_at | date | день приезда в ПВЗ |
Пример: данные
pvz · 3 строки
| pvz_id | city | address |
|---|---|---|
| 1 | Тула | ул. Болдина, 98 |
| 2 | Тула | пр. Ленина, 41 |
| 3 | Рязань | ул. Есенина, 13 |
parcels · 6 строк
| parcel_id | pvz_id | status | arrived_at |
|---|---|---|---|
| 1 | 1 | issued | 2025-10-02 |
| 2 | 1 | issued | 2025-10-05 |
| 3 | 1 | returned | 2025-10-07 |
| 4 | 1 | waiting | 2025-10-30 |
| 5 | 2 | issued | 2025-10-11 |
| 6 | 3 | issued | 2025-09-28 |
Ожидаемый ответ
| pvz_id | issued | returned | waiting |
|---|---|---|---|
| 1 | 2 | 1 | 1 |
| 2 | 1 | 0 | 0 |
| 3 | 0 | 0 | 0 |
Как проверяем
Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
pvz_id, issued, returned, waiting
Источник: наша задача на данных Ozon: возвраты по ПВЗ. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.