Управленческая иерархия через рекурсивный CTE

Сложная Рекурсивный CTE Яндекс

Условие задачи

В таблице employees хранится оргструктура: у каждого сотрудника есть manager_id — ссылка на руководителя, и только у гендиректора он NULL. Постройте иерархию сверху вниз. Для каждого сотрудника выведите: id, name, level (уровень в иерархии, у гендиректора level = 1) и path — путь подчинения от гендиректора до сотрудника, где имена соединены через ' -> ' (например 'Ирина Соколова -> Павел Морозов -> Дмитрий Волков'). Отсортируйте результат по level, затем по id.

Схема данных

CREATE TABLE employees (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  position TEXT NOT NULL,
  manager_id INTEGER
);

Темы

WITH RECURSIVE рекурсия иерархия CTE дерево

Подсказки

Что проверяет эта задача

Задача «Управленческая иерархия через рекурсивный CTE» учит решать задачи по теме «Рекурсивный CTE» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в Яндекс и других IT-компаниях. Уровень сложный — задача проверяет глубину и умение собрать запрос из нескольких приёмов.

Как подступиться к решению

Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).

Хочешь разобрать SQL системно с нуля — пройди бесплатный курс «SQL с нуля» и закрепи навык в тренажёре.

Решить в интерактивной SQL-песочнице → ← Все SQL-задачи