Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Inicializuj začátek rekurze nastavením ParentID na 101.
  • Nastav LEVEL na aktuální krok rekurze.
  • Spoj kotevního člena s CTE na základě ID rodič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);
Upravit a spustit kód