Zacznij terazZacznij za darmo

Ile pokoleń liczy drzewo genealogiczne?

W tym ćwiczeniu przeanalizujesz przykładowe drzewo genealogiczne. Zbiór danych family składa się z trzech kolumn: ID, name oraz ParentID. Twoim zadaniem jest obliczenie liczby pokoleń. W tym celu zlicz wszystkie pokolenia, zaczynając od osoby z ParentID = 101.

Musisz obliczyć wartość LEVEL rekurencji, która reprezentuje bieżący poziom w hierarchii pokoleń. Następnie zlicz liczbę poziomów za pomocą funkcji COUNT(). Pamiętaj, że liczba poziomów odpowiada liczbie pokoleń – na przykład wynik 100 oznacza, że znaleziono 100 pokoleń.

To ćwiczenie jest częścią kursu

Hierarchiczne i rekurencyjne zapytania w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Zainicjuj rekurencję, ustawiając ParentID na 101.
  • Ustaw LEVEL na bieżący krok rekurencji.
  • Połącz element bazowy z CTE, używając JOIN po ID rodzica i dziecka.
  • Zlicz liczbę pokoleń za pomocą COUNT().

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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);
Edytuj i uruchom kod