ComenzarEmpieza gratis

¿Obtener el número de generaciones?

En este ejercicio, vamos a analizar un árbol genealógico aleatorio. El conjunto de datos family tiene tres columnas: ID, name y ParentID. Tu tarea es calcular el número de generaciones. Lo harás contando todas las generaciones empezando por la persona con ParentID = 101.

Para esta tarea, tienes que calcular LEVEL de la recursión, que representa el nivel actual en la jerarquía de generaciones. Después, debes contar el número de LEVEL usando COUNT(). Recuerda que el recuento de niveles es el número de generaciones; por ejemplo, un recuento de nivel de 100 significa que has encontrado 100 generaciones.

Este ejercicio forma parte del curso

Consultas jerárquicas y recursivas en SQL Server

Ver curso

Instrucciones del ejercicio

  • Inicializa el inicio de la recursión estableciendo ParentID en 101.
  • Define LEVEL como el paso actual de la recursión.
  • Haz un JOIN del miembro ancla con la CTE por el ID del padre y del hijo.
  • Usa COUNT() para contar el número de generaciones.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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);
Editar y ejecutar código