¿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
Instrucciones del ejercicio
- Inicializa el inicio de la recursión estableciendo
ParentIDen101. - Define
LEVELcomo el paso actual de la recursión. - Haz un
JOINdel 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);