0Pricing
Digital Marketing Academy · Aula

Unindo tabelas de marketing

Sessões, usuários e pedidos

Unindo tabelas de marketing é uma aula grátis de Digital Marketing Academy no CoddyKit. Esta é a aula 3 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.

Por que usar JOIN?

As perguntas reais abrangem várias tabelas. O investimento está nas campanhas, a receita está nos pedidos e as características estão nos usuários. Para calcular ROAS ou LTV por segmento, você precisa combiná-las.

JOIN relaciona linhas de duas tabelas usando uma chave compartilhada, como user_id ou campaign_id.

SELECT o.order_id, u.country
FROM orders o
JOIN users u ON o.user_id = u.user_id;

INNER JOIN

Um INNER JOIN retorna apenas as linhas que correspondem nas duas tabelas. Pedidos sem um usuário correspondente ou usuários sem pedidos são descartados.

Use-o quando você se importar apenas com registros existentes nos dois lados, como os de compradores.

SELECT u.user_id, u.country, SUM(o.revenue) AS revenue
FROM users u
JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id, u.country;

LEFT JOIN

Um LEFT JOIN mantém todas as linhas da tabela à esquerda, mesmo quando não há correspondência à direita. Os valores ausentes retornam como NULL.

É assim que você encontra usuários que nunca fizeram um pedido ou sessões que nunca resultaram em conversão.

SELECT u.user_id, COALESCE(SUM(o.revenue), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id;

Encontrando as lacunas

Combine um LEFT JOIN com uma verificação de NULL para isolar as não correspondências. "Quais cadastros nunca fizeram uma compra?" é uma pergunta clássica sobre retenção.

O fato de o lado direito ser NULL significa que não existia nenhum pedido correspondente.

SELECT u.user_id, u.signup_date
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
WHERE o.order_id IS NULL;

Relacionando sessões a pedidos

Vincular sessões a pedidos conecta o comportamento ao resultado. Faça a correspondência usando user_id para ver qual tráfego acabou gerando compras.

Essa é a base da análise de atribuição de canais.

SELECT s.channel, SUM(o.revenue) AS revenue
FROM sessions s
JOIN orders o ON o.user_id = s.user_id
GROUP BY s.channel;

Calculando o ROAS

O ROAS verdadeiro exige investimento e receita lado a lado. Relacione campanhas a pedidos usando campaign_id e depois divida os totais.

NULLIF protege contra a divisão por um investimento igual a zero.

SELECT c.campaign_id,
       SUM(o.revenue) / NULLIF(SUM(c.spend), 0) AS roas
FROM campaigns c
LEFT JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.campaign_id;

Apelidos de tabela

Apelidos (o para pedidos, u para usuários) mantêm as consultas com várias tabelas curtas e sem ambiguidades. Sempre qualifique as colunas quando um nome existir nas duas tabelas.

Apelidos claros tornam JOIN complexos muito mais fáceis de ler e depurar.

SELECT c.name AS campaign, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.name;

Relacionando três tabelas

Encadeie JOIN para reunir mais de duas tabelas. Aqui, conectamos campanhas a pedidos e depois a usuários para segmentar a receita por país.

Cada JOIN adiciona outra condição ON que vincula a nova tabela ao conjunto existente.

SELECT c.name, u.country, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
JOIN users u ON u.user_id = o.user_id
GROUP BY c.name, u.country;

Observe a granularidade

Relacionar uma relação de um para muitos pode multiplicar as linhas e inflar as somas. Se uma campanha tiver muitos pedidos, somar o investimento por pedido fará com que ele seja contado duas vezes.

Agregue cada lado separadamente e depois relacione os totais para manter os números corretos.

SELECT c.campaign_id, c.total_spend, r.revenue
FROM campaigns c
JOIN (
  SELECT campaign_id, SUM(revenue) AS revenue
  FROM orders GROUP BY campaign_id
) r ON r.campaign_id = c.campaign_id;

Atribuição ao primeiro contato

Para atribuir o crédito ao primeiro canal de onde um usuário veio, encontre a sessão mais antiga de cada usuário e depois relacione-a aos pedidos.

Uma subconsulta isola o primeiro contato antes da associação com a receita.

SELECT f.channel, SUM(o.revenue) AS revenue
FROM (
  SELECT DISTINCT ON (user_id) user_id, channel
  FROM sessions ORDER BY user_id, session_date
) f
JOIN orders o ON o.user_id = f.user_id
GROUP BY f.channel;

JOIN na prática

É com JOIN que o SQL de marketing se torna poderoso. Investimento mais receita fornece ROAS; sessões mais pedidos fornecem atribuição; usuários mais pedidos fornecem LTV por segmento.

Escolha INNER quando os dois lados precisarem existir e LEFT quando quiser preservar e examinar as lacunas.

Verificação rápida

Você quer listar todos os usuários cadastrados, inclusive os que nunca fizeram um pedido. Qual JOIN deve usar?

Recapitulação

INNER JOIN mantém as correspondências nos dois lados; LEFT JOIN mantém todas as linhas da esquerda e revela as lacunas. Apelidos e colunas qualificadas mantêm as consultas organizadas.

Cuidado com a armadilha da multiplicação de linhas em relações de um para muitos; faça uma pré-agregação para manter as somas precisas. A seguir: consultas de coortes e funis.

Perguntas Frequentes

A aula “Unindo tabelas de marketing” é grátis?

Sim — o texto completo de “Unindo tabelas de marketing” é 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 “Unindo tabelas de marketing”?

Sessões, usuários e pedidos 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 3 de 4.

Quanto tempo leva a aula “Unindo tabelas de marketing”?

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