НачатьНачать бесплатно

Определение уровня иерархии

При работе с рекурсией важно отслеживать её текущий уровень. В контексте IT-организации это означает определение позиции каждого сотрудника в иерархии.

A section of the entire hierarchy

Для этого используется поле LEVEL, которое хранит номер текущего шага рекурсии. Вам нужно ввести это поле в якорном элементе, а затем увеличивать его значение на каждом шаге рекурсии.

Обратите внимание: первый уровень иерархии соответствует значению 0, второй — 1 и так далее.

Это упражнение является частью курса

Иерархические и рекурсивные запросы в SQL Server

Посмотреть курс

Инструкции к упражнению

  • Инициализируйте поле LEVEL значением 1 в начале рекурсии.
  • Выберите данные IT-директора в качестве начального шага CTE, применив фильтр по полю Supervisor.
  • Задайте значение LEVEL, соответствующее текущему шагу рекурсии.
  • Выполните JOIN с определённым CTE по полям ID руководителя и сотрудника.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

WITH employee_hierarchy AS (
	SELECT
		ID, 
  		NAME,
  		Supervisor,
  		-- Initialize the field LEVEL
  		___ as LEVEL
	FROM employee
  	-- Start with the supervisor ID of the IT Director
	WHERE ___ = ___
	UNION ALL
	SELECT 
  		emp.ID,
  		emp.NAME,
  		emp.Supervisor,
  		-- Increment LEVEL by 1 each step
  		___ + 1
	FROM employee emp
		JOIN employee_hierarchy
  		-- JOIN on supervisor and ID
  		ON emp.___ = employee_hierarchy.___)
    
SELECT 
	cte.Name, cte.Level,
    emp.Name as ManagerID
FROM employee_hierarchy as cte
	JOIN employee as emp
	ON cte.Supervisor = emp.ID 
ORDER BY Level;
Редактировать и запускать код