В таблице 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-задачи