Zjisti počet generací
V tomto cvičení se podíváme na jeden rodinný strom. Dataset family obsahuje tři sloupce: ID, name a ParentID.
Tvým úkolem je zjistit počet generací. Uděláš to tak, že spočítáš všechny generace počínaje osobou s ParentID = 101.
Pro tento úkol musíš vypočítat LEVEL rekurze, který představuje aktuální úroveň v hierarchii generací. Poté spočítej počet úrovní LEVEL pomocí COUNT(). Nezapomeň, že počet úrovní odpovídá počtu generací – například hodnota 100 znamená, že jsi našel/a 100 generací.
Toto cvičení je součástí kurzu
Hierarchical and Recursive Queries in SQL Server
Pokyny k cvičení
- Inicializuj začátek rekurze nastavením
ParentIDna101. - Nastav
LEVELna aktuální krok rekurze. - Spoj kotevního člena s CTE na základě
IDrodiče a potomka. - Pomocí
COUNT()spočítej počet generací.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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);