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

85. Куда доедет фура с Коледино за 4 перегона

Сложная

В routes — регулярные рейсы между складами: из from_wh в to_wh за hours часов. Рейсы односторонние, в графе есть циклы (из Казани фуры возвращаются в Коледино).

Найдите все склады, куда можно доставить товар из Коледино не больше чем за 4 перегона. Для каждого верните warehouse, min_hops — наименьшее число перегонов и min_hours — наименьшее суммарное время среди путей до 4 перегонов (это может быть другой путь). Сам Коледино в ответ не включайте.

Порядок строк не важен.

В работе: Планирование перемещения остатков: с какого склада можно закрыть дефицит на другом и за сколько часов.

Таблицы

routes — рейсы между складами, ориентированный граф

КолонкаТипЧто значит
from_whtextоткуда
to_whtextкуда
hoursintвремя в пути, ч

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

routes · 11 строк

from_whto_whhours
КолединоЭлектросталь2
КолединоКазань14
ЭлектростальКазань11
КазаньЕкатеринбург16
ЕкатеринбургНовосибирск22
НовосибирскХабаровск60
ХабаровскВладивосток12
КолединоКраснодар18
КраснодарНевинномысск4
НевинномысскКоледино20
КазаньКоледино14

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

warehousemin_hopsmin_hours
Невинномысск222
Краснодар118
Электросталь12
Казань113
Хабаровск4112
Екатеринбург229
Новосибирск351
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк не важен.
warehouse, min_hops, min_hours
рекурсивный CTEGROUP BY

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

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