Sêniorcterecursãomodelagem
CTE recursivo para hierarquia organizacional
Publicado em 2025-03-01
Pergunta
Como listar toda a cadeia de gestores até o CEO partindo de um colaborador específico?
Explicação
CTEs recursivas resolvem problemas de grafos em árvores: organograma, categorias aninhadas, BOM. A âncora define o ponto inicial e a parte recursiva navega o relacionamento pai-filho.
Query SQL
sql
WITH RECURSIVE chain AS (
SELECT id, nome, manager_id, 0 AS nivel
FROM colaboradores
WHERE id = 42
UNION ALL
SELECT c.id, c.nome, c.manager_id, ch.nivel + 1
FROM colaboradores c
JOIN chain ch ON ch.manager_id = c.id
)
SELECT * FROM chain ORDER BY nivel;Resposta esperada
Lista do colaborador 42 até o topo da hierarquia, com profundidade em cada nível.
Erros comuns
- Esquecer UNION ALL (UNION elimina duplicatas e mata a recursão em alguns dialetos)
- Não ter condição de parada quando há ciclos nos dados
- Confundir a ordem da junção (filho.manager_id = pai.id)
Dica de entrevista
Antes de escrever a CTE, desenhe a árvore no papel e identifique a âncora e a relação de avanço.