Рекурсивный CTE: развёртка маршрута доставки

Senior SQL Логистика

Условие задания

**Контекст:** Логистическая компания хранит сеть маршрутов между складами. Нужно найти все возможные пути доставки между двумя точками и выбрать оптимальный.

**Данные:**

[см. код в задании]

Пример данных: Москва → Казань (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 граф маршрут защита от циклов

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "Рекурсивный CTE: развёртка маршрута доставки"?

Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: WITH RECURSIVE, граф, маршрут, защита от циклов.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «SQL»?

На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.

← Все задания