Consultas de coortes e funis
Responda a perguntas sobre retenção
Consultas de coortes e funis é uma aula grátis de Digital Marketing Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Digital Marketing Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Digital Marketing Academy inclui 4 aulas no total.
O que é uma coorte?
Uma coorte é um grupo de usuários que compartilham um evento inicial, geralmente o mês de cadastro. Acompanhar cada coorte ao longo do tempo revela a retenção real.
As métricas agregadas ocultam o cancelamento; as coortes mostram se os novos usuários realmente permanecem.
SELECT user_id,
DATE_TRUNC('month', signup_date) AS cohort_month
FROM users;Definindo a coorte
O primeiro passo é identificar a coorte de cada usuário. DATE_TRUNC arredonda as datas de cadastro para o início do mês, permitindo agrupar os usuários corretamente.
Armazene isso como um componente reutilizável para tudo o que vier a seguir.
SELECT DATE_TRUNC('month', signup_date) AS cohort_month,
COUNT(*) AS cohort_size
FROM users
GROUP BY 1
ORDER BY 1;Períodos de atividade
A retenção mede a atividade nos meses após o cadastro. Calcule o período como a diferença entre o mês de um pedido e o mês da coorte.
O período 0 é o mês do cadastro, o período 1 é o mês seguinte e assim por diante.
SELECT o.user_id,
(DATE_PART('year', o.order_date) - DATE_PART('year', u.signup_date)) * 12
+ (DATE_PART('month', o.order_date) - DATE_PART('month', u.signup_date)) AS period
FROM orders o
JOIN users u ON u.user_id = o.user_id;Construindo uma grade de retenção
Combine o mês da coorte e o período e depois conte os usuários ativos distintos em cada célula. O resultado é o triângulo clássico de retenção.
Cada linha é uma coorte; cada coluna representa os meses desde o cadastro.
SELECT DATE_TRUNC('month', u.signup_date) AS cohort,
DATE_PART('month', AGE(o.order_date, u.signup_date)) AS period,
COUNT(DISTINCT o.user_id) AS active
FROM users u
JOIN orders o ON o.user_id = u.user_id
GROUP BY 1, 2;Taxa de retenção
É difícil comparar contagens brutas entre coortes de tamanhos diferentes. Divida os usuários ativos de cada período pelo tamanho original da coorte.
Uma função de janela leva o tamanho do período 0 para cada linha, permitindo calcular a proporção.
SELECT cohort, period,
active * 1.0 / FIRST_VALUE(active) OVER (
PARTITION BY cohort ORDER BY period
) AS retention
FROM cohort_activity;O que é um funil?
Um funil acompanha os usuários por etapas ordenadas: visita, cadastro, adição ao carrinho e compra. A queda entre as etapas mostra onde você perde pessoas.
A análise de funil transforma reclamações vagas sobre "baixa conversão" em uma etapa específica em que há perda de usuários.
SELECT step, COUNT(DISTINCT user_id) AS users
FROM events
WHERE step IN ('visit', 'signup', 'cart', 'purchase')
GROUP BY step;Contando cada etapa
A agregação condicional conta os usuários em cada etapa em uma única passagem. FILTER contabiliza os usuários distintos que chegaram a cada etapa.
Uma consulta, uma linha e o funil inteiro em um relance.
SELECT
COUNT(DISTINCT user_id) FILTER (WHERE step = 'visit') AS visits,
COUNT(DISTINCT user_id) FILTER (WHERE step = 'signup') AS signups,
COUNT(DISTINCT user_id) FILTER (WHERE step = 'purchase') AS buyers
FROM events;Taxas de conversão por etapa
O número mais interessante é a proporção entre etapas consecutivas. Dividir cada etapa pela anterior revela a maior queda.
Converta para decimal para que a divisão inteira não zere sua taxa.
SELECT signups * 1.0 / NULLIF(visits, 0) AS visit_to_signup,
buyers * 1.0 / NULLIF(signups, 0) AS signup_to_buy
FROM funnel_counts;Funis ordenados com carimbos de data e hora
Um funil rigoroso exige que as etapas aconteçam na ordem. Relacione cada etapa à seguinte apenas quando seu carimbo de data e hora for posterior.
Isso impede contar uma compra que aconteceu antes do cadastro correspondente.
SELECT COUNT(DISTINCT v.user_id) AS visited,
COUNT(DISTINCT p.user_id) AS purchased
FROM events v
LEFT JOIN events p
ON p.user_id = v.user_id
AND p.step = 'purchase'
AND p.event_time > v.event_time
WHERE v.step = 'visit';Funil por canal
Dividir o funil por canal de aquisição mostra quais fontes enviam usuários que realmente convertem, não apenas clicam.
Agrupe as contagens condicionais por canal para comparar a qualidade entre as fontes.
SELECT channel,
COUNT(DISTINCT user_id) FILTER (WHERE step = 'visit') AS visits,
COUNT(DISTINCT user_id) FILTER (WHERE step = 'purchase') AS buyers
FROM events
GROUP BY channel;Da percepção à ação
As coortes mostram se a retenção está melhorando de uma versão para outra; os funis mostram qual etapa deve ser corrigida primeiro.
Juntos, eles fazem o marketing deixar de apenas relatar o que aconteceu e passar a diagnosticar por que aconteceu e onde investir em seguida.
Verificação rápida
Seu funil conta usuários na visita, no cadastro e na compra. O que revelam as proporções entre etapas consecutivas?
Recapitulação
As coortes agrupam os usuários pelo mês de início e acompanham a retenção ao longo dos períodos usando DATE_TRUNC e AGE. Os funis contam usuários distintos em cada etapa ordenada e comparam as proporções entre etapas consecutivas.
Agora você tem as ferramentas avançadas para diagnosticar retenção e conversão inteiramente em SQL.
Aprenda Digital Marketing Academy com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 63
- Aulas
- 239
Perguntas Frequentes
A aula “Consultas de coortes e funis” é grátis?
Sim — o texto completo de “Consultas de coortes e funis” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Digital Marketing Academy, atualize para CoddyKit PRO. O curso de Digital Marketing Academy inclui 4 aulas no total.
O que vou aprender em “Consultas de coortes e funis”?
Responda a perguntas sobre retenção Você pratica Digital Marketing Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Digital Marketing Academy?
Nenhuma experiência prévia é necessária. Digital Marketing Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Consultas de coortes e funis”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Digital Marketing Academy?
Sim. Cada aula de Digital Marketing Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que profissionais de marketing aprendem SQL
- SELECT, WHERE, GROUP BY
- Unindo tabelas de marketing
- Consultas de coortes e funis