Визначте кількість поколінь
У цій вправі ми розглянемо випадкове сімейне дерево. Набір даних family містить три стовпці: ID, name і ParentID.
Ваше завдання — обчислити кількість поколінь. Ви зробите це, порахувавши всі покоління, починаючи з особи з ParentID = 101.
Для цього потрібно обчислити LEVEL рекурсії, який відображає поточний рівень у ієрархії поколінь. Після цього порахуйте кількість значень LEVEL за допомогою COUNT(). Пам'ятайте, що кількість рівнів — це кількість поколінь; наприклад, кількість рівнів 100 означає, що ви знайшли 100 поколінь.
Ця вправа є частиною курсу
Ієрархічні та рекурсивні запити в SQL Server
Інструкції до вправи
- Ініціалізуйте старт рекурсії, установивши
ParentIDна101. - Встановіть
LEVELяк поточний крок рекурсії. - З'єднайте опорного учасника з 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);