세대 수 구하기
이 연습 문제에서는 임의의 가계도를 살펴보겠습니다. 데이터셋 family에는 ID, name, ParentID 세 열이 있습니다.
여러분의 과제는 세대 수를 계산하는 것입니다. ParentID = 101인 사람부터 시작해 모든 세대를 세어 구하게 됩니다.
이를 위해 세대 계층에서 현재 단계를 나타내는 재귀의 LEVEL을 계산해야 합니다. 그다음 COUNT()를 사용해 LEVEL의 개수를 세세요. 레벨의 개수는 곧 세대 수라는 점을 기억하세요. 예를 들어 레벨 개수가 100이면 100세대를 찾았다는 뜻입니다.
이 연습은 강의의 일부입니다
SQL Server에서의 계층형 및 재귀 쿼리
연습 안내
ParentID를101로 설정해 재귀 시작점을 초기화하세요.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);