Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Initiera rekursionsstarten genom att sätta ParentID till 101.
  • Sätt LEVEL till 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);
Redigera och kör kod