시작하기무료로 시작하기

세대 수 구하기

이 연습 문제에서는 임의의 가계도를 살펴보겠습니다. 데이터셋 family에는 ID, name, ParentID 세 열이 있습니다. 여러분의 과제는 세대 수를 계산하는 것입니다. ParentID = 101인 사람부터 시작해 모든 세대를 세어 구하게 됩니다.

이를 위해 세대 계층에서 현재 단계를 나타내는 재귀의 LEVEL을 계산해야 합니다. 그다음 COUNT()를 사용해 LEVEL의 개수를 세세요. 레벨의 개수는 곧 세대 수라는 점을 기억하세요. 예를 들어 레벨 개수가 100이면 100세대를 찾았다는 뜻입니다.

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

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

강의 보기

연습 안내

  • ParentID101로 설정해 재귀 시작점을 초기화하세요.
  • LEVEL을 현재 재귀 단계로 설정하세요.
  • 부모와 자식의 ID로 기준 멤버를 CTE에 조인하세요.
  • 세대 수를 COUNT()로 계산하세요.

실습형 인터랙티브 연습

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

WITH children AS (
    SELECT 
  		ID, 
  		Name,
  		ParentID,
  		0 as LEVEL
  	FROM family 
  	-- Set the targeted parent as recursion start
  	WHERE ___ = ___
    UNION ALL
    SELECT 
  		child.ID,
  		child.NAME,
  		child.ParentID,
  		-- Increment LEVEL by 1 each step
  		___ + ___
  	FROM family child
  		INNER JOIN children 
		-- Join the anchor query with the CTE   
  		ON child.___ = children.___)
    
SELECT
	-- Count the number of generations
	___(___) as Generations
FROM children
OPTION(MAXRECURSION 300);
코드 편집 및 실행