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

Визначте кількість поколінь

У цій вправі ми розглянемо випадкове сімейне дерево. Набір даних 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);
Редагувати та запускати код