Räkna antalet generationer
I den här övningen ska vi titta på ett slumpmässigt valt släktträd. Datamängden family består av tre kolumner: ID, name och ParentID.
Din uppgift är att beräkna antalet generationer. Det gör du genom att räkna alla generationer med start från den person som har ParentID = 101.
För den här uppgiften behöver du beräkna LEVEL för rekursionen, vilket representerar den aktuella nivån i generationshierarkin. Därefter räknar du antalet LEVELs med hjälp av COUNT(). Kom ihåg att antalet nivåer motsvarar antalet generationer – ett nivåantal på 100 innebär alltså att du hittat 100 generationer.
Den här övningen är en del av kursen
Hierarkiska och rekursiva frågor i SQL Server
Övningsinstruktioner
- Initiera rekursionsstarten genom att sätta
ParentIDtill101. - Sätt
LEVELtill det aktuella rekursionssteget. - Koppla ankarmedlemmen till CTE:n på förälderns och det underordnade elementets ID.
- Använd
COUNT()för att räkna antalet generationer.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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);