**Контекст:** Логистическая компания хранит сеть маршрутов между складами. Нужно найти все возможные пути доставки между двумя точками и выбрать оптимальный.
**Данные:**
[см. код в задании]
Пример данных: Москва → Казань (800 км, 12 ч), Казань → Екатеринбург (600 км, 9 ч), Москва → Нижний Новгород (400 км, 6 ч), Нижний Новгород → Екатеринбург (1200 км, 18 ч).
**Задание:**
1. Найдите **все возможные маршруты** из `'Москва'` до `'Екатеринбург'`, длиной не более 5 перевалок
2. Для каждого маршрута выведите: полный путь (через ' → '), количество перевалок, общее расстояние и общее время
3. Реализуйте **защиту от циклов** (один склад не должен повторяться в маршруте)
4. Отсортируйте по общему времени
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE warehouse_routes (
id SERIAL PRIMARY KEY,
from_warehouse VARCHAR(100) NOT NULL,
to_warehouse VARCHAR(100) NOT NULL,
distance_km NUMERIC(10,2) NOT NULL,
transit_hours NUMERIC(6,2) NOT NULL,
is_active BOOLEAN NOT NULL DEFAULT TRUE
);
WITH RECURSIVE граф маршрут защита от циклов
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: WITH RECURSIVE, граф, маршрут, защита от циклов.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания