Digital Marketing Academy · Aula

Consultas de coortes e funis

Responda a perguntas sobre retenção

Aula 4 de 413 etapas

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.

Grátis para começar

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

  1. Por que profissionais de marketing aprendem SQL
  2. SELECT, WHERE, GROUP BY
  3. Unindo tabelas de marketing
  4. Consultas de coortes e funis
← Voltar para Digital Marketing Academy