ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Inicialize o início da recursão definindo o ParentID como 101.
  • Defina LEVEL como 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);
Editar e executar o código