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
Instrukcje do ćwiczenia
- Zainicjuj rekurencję, ustawiając
ParentIDna101. - Ustaw
LEVELna bieżący krok rekurencji. - Połącz element bazowy z CTE, używając
JOINpoIDrodzica 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);