ÎncepețiÎncepe gratuit

Câte generații există?

În acest exercițiu, vom analiza un arbore genealogic aleatoriu. Setul de date family conține trei coloane: ID, name și ParentID. Sarcina ta este să calculezi numărul de generații. Vei face acest lucru numărând toate generațiile care pornesc de la persoana cu ParentID = 101.

Pentru această sarcină, trebuie să calculezi LEVEL-ul recursiei, care reprezintă nivelul curent în ierarhia generațiilor. Apoi, trebuie să numeri câte LEVEL-uri există folosind COUNT(). Reține că numărul de niveluri reprezintă numărul de generații – de exemplu, un număr de 100 de niveluri înseamnă că ai găsit 100 de generații.

Acest exercițiu face parte din cursul

Interogări ierarhice și recursive în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inițializează punctul de start al recursiei setând ParentID la 101.
  • Setează LEVEL la pasul curent al recursiei.
  • Unește membrul ancoră cu CTE-ul pe baza ID-ului părintelui și al copilului.
  • Numără numărul de generații folosind COUNT().

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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);
Editează și rulează codul