Кто ваш руководитель?
В этом упражнении мы будем работать с набором данных IT-организации, который хранится в таблице employee. Таблица содержит поля: ID (идентификатор сотрудника), Name (имя сотрудника) и Supervisor (идентификатор руководителя).
IT-организация состоит из различных ролей и уровней.

В организации есть один IT-директор (ID=1, Heinz Griesser, Supervisor=0), у которого есть множество подчинённых сотрудников. В подчинении у IT-директора находится менеджер по IT-архитектуре (ID=10, Andreas Sternig, Supervisor=1) с тремя подчинёнными. У Andreas Sternig значение Supervisor=1, что соответствует ID IT-директора.
Для начала ответим на вопрос: кто является руководителем каждого сотрудника?
Эту задачу мы решим с помощью рекурсивного запроса к набору данных.
Это упражнение является частью курса
Иерархические и рекурсивные запросы в SQL Server
Инструкции к упражнению
- Создайте CTE с именем
employee_hierarchy. - Выберите данные IT-директора в качестве начального шага CTE, отфильтровав записи по его
SupervisorID. - Выполните объединение с таблицей
employee, чтобы получить имя руководителя.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- Create the CTE employee_hierarchy
WITH ___ AS (
SELECT
ID,
NAME,
Supervisor
FROM employee
-- Start with the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor
FROM employee emp
JOIN employee_hierarchy
ON emp.Supervisor = employee_hierarchy.ID)
SELECT
cte.Name as EmployeeName,
emp.Name as ManagerName
FROM employee_hierarchy as cte
JOIN employee as emp
-- Perform the JOIN on Supervisor and ID
ON cte.___ = emp.___;