Ottieni il numero di generazioni
In questo esercizio esamineremo un albero genealogico casuale. Il dataset family è composto da tre colonne: ID, name e ParentID.
Il tuo compito è calcolare il numero di generazioni. Lo farai contando tutte le generazioni a partire dalla persona con ParentID = 101.
Per questo, devi calcolare il LEVEL della ricorsione, che rappresenta il livello corrente nella gerarchia delle generazioni. Dopodiché, devi contare il numero di valori di LEVEL usando COUNT(). Ricorda che il conteggio dei livelli corrisponde al numero di generazioni: per esempio, un conteggio di livello pari a 100 significa che hai trovato 100 generazioni.
Questo esercizio fa parte del corso
Query gerarchiche e ricorsive in SQL Server
Istruzioni dell'esercizio
- Inizializza l'avvio della ricorsione impostando
ParentIDa101. - Imposta
LEVELal passo corrente della ricorsione. - Esegui il join del membro di ancoraggio alla CTE sull'ID del genitore e del figlio.
- Usa
COUNT()per contare il numero di generazioni.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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);