Рекурсивные CTE в SQL: деревья, графы и состав изделия

Задачи SQL на WITH и рекурсивные CTE: обход дерева, защита от циклов и расчёт состава изделия.

Состав подборки: 1 вопрос с выбором ответа, 3 задачи на код. Условия и формат проверки указаны на странице каждой задачи.

Разберите маленький пример

Для дерева A → B → C глубины относительно A равны 0, 1, 2. В графе может быть ещё ребро C → A. Тогда простое продолжение обхода зациклится без ограничения повторных узлов. Наличие нескольких путей к детали также влияет на суммарную потребность.

На что обратить внимание

  • Разделяйте начальную часть CTE и правило перехода к следующему уровню.
  • Для леса начинайте с каждого корня, а не только с первого найденного.
  • Узел, путь и посещение узла — разные сущности: не удаляйте нужные пути бездумным DISTINCT.
  • В задаче спецификации перемножайте количества вдоль пути и учитывайте общие детали разных ветвей.

Порядок практики

  1. WITH в SQL: два CTE и порядок использования — выбор ответа.
  2. SQL: Обход дерева: глубина и путь — Пути, корни и листья всего каталога — код.
  3. SQL: Обход графа и защита от циклов — Простые маршруты и допустимые продолжения — код.
  4. SQL: Расчёт состава изделия рекурсивным запросом — Полная потребность в узлах и общих деталях — код.

Куда двигаться дальше

Продолжение с графами, интервалами и аналитическими запросами — платный курс «Продвинутый SQL».

Условия наличия и отсутствия связанных объектов.

Рекурсивные CTE в SQL: деревья, графы и состав изделия