Obter o número de gerações?
Neste exercício, vamos analisar uma árvore genealógica aleatória. O conjunto de dados family tem três colunas: ID, name e ParentID.
Sua tarefa é calcular o número de gerações. Você fará isso contando todas as gerações a partir da pessoa com ParentID = 101.
Para essa tarefa, você precisa calcular o LEVEL da recursão, que representa o nível atual na hierarquia de gerações. Depois, você deve contar a quantidade de LEVELs usando COUNT(). Lembre-se de que a contagem de níveis é o número de gerações; por exemplo, uma contagem de nível igual a 100 significa que você encontrou 100 gerações.
Este exercício faz parte do curso
Consultas Hierárquicas e Recursivas no SQL Server
Instruções do exercício
- Inicialize o início da recursão definindo o
ParentIDcomo101. - Defina
LEVELcomo o passo atual da recursão. - Faça o join entre o membro âncora e a CTE usando o ID do pai e do filho.
- Use
COUNT()para contar o número de gerações.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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);