시작하기무료로 시작하기

계층 위치 알아내기

재귀를 사용할 때 중요한 문제 중 하나는 재귀 단계(level)를 추적하는 일입니다. IT 조직에서는 각 직원이 계층 구조에서 어느 위치에 있는지 기록하는 것을 의미해요.

A section of the entire hierarchy

이를 위해 현재 재귀 단계를 추적하는 LEVEL 필드를 사용합니다. 앵커 멤버에서 이 필드를 도입하고, 재귀 멤버에서는 재귀가 한 단계 진행될 때마다 이 값을 증가시켜야 해요.

첫 번째 계층 레벨은 0, 두 번째 레벨은 1이라는 점을 기억해 주세요.

이 연습은 강의의 일부입니다

SQL Server에서의 계층형 및 재귀 쿼리

강의 보기

연습 안내

  • 재귀 시작 시 LEVEL 필드를 1로 초기화하세요.
  • CTE의 초기 단계로 IT director 정보를 선택하기 위해 Supervisor로 필터링하세요.
  • 현재 재귀 단계에 맞게 LEVEL을 설정하세요.
  • 상사와 직원의 ID를 기준으로 정의한 CTE와 JOIN을 수행하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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;
코드 편집 및 실행