Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

  • Inizializza l'avvio della ricorsione impostando ParentID a 101.
  • Imposta LEVEL al 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);
Modifica ed esegui il codice