ПочатиПочніть безкоштовно

Визначте позицію в ієрархії

Важливе завдання під час роботи з рекурсією — відстежувати рівень рекурсії. В ІТ‑організації це означає знати позицію кожного працівника в ієрархії.

A section of the entire hierarchy

Для цього ви використаєте поле LEVEL, яке зберігає поточний крок рекурсії. Вам потрібно ввести це поле в опорному (anchor) члені та збільшувати його значення на кожному кроці рекурсії в рекурсивному члені.

Пам'ятайте: перший рівень ієрархії — 0, другий — 1, і так далі.

Ця вправа є частиною курсу

Ієрархічні та рекурсивні запити в SQL Server

Переглянути курс

Інструкції до вправи

  • Ініціалізуйте поле LEVEL значенням 1 на початку рекурсії.
  • Виберіть інформацію про директора ІТ як початковий крок 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;
Редагувати та запускати код