Pergunta de entrevista para Analista de Dados

Qual é a diferença entre um inner join e um left join, e quando usar o errado arruína uma análise silenciosamente?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Um inner join retorna apenas as linhas que têm correspondência dos dois lados. Um left join retorna todas as linhas da tabela da esquerda mais as colunas correspondentes da direita, com nulos onde não há correspondência. O estrago silencioso vem de usar um inner join para uma contagem: clientes com zero pedidos somem por completo, então a sua taxa de conversão parece melhor do que a realidade e nada dá erro.

Por que os entrevistadores perguntam isso

Joins são a ferramenta mais usada no dia a dia de um analista, e a escolha errada produz um número plausível e errado em vez de um erro. Os entrevistadores querem ouvir que você pensa em qual lado precisa ser preservado antes de escrever a query, e que você confere a contagem de linhas antes e depois de um join em vez de confiar no resultado.

Como estruturar sua resposta

  • Defina os dois joins pelo critério de quais linhas sobrevivem.
  • Dê um caso concreto em que o inner join esconde os zeros.
  • Cite a conferência da contagem de linhas antes e depois do join.
  • Observe que filtrar a tabela da direita no WHERE transforma um left join em inner join.

Exemplo de resposta

Exemplo falado, em primeira pessoa

O inner mantém só as linhas com correspondência, o left mantém tudo da esquerda e preenche com nulo onde a direita não tem nada. O motivo de eu me importar tanto é que a escolha errada não lança erro nenhum, ela só te dá uma resposta errada com toda a confiança. A versão clássica é contar clientes fazendo join com pedidos. Com um inner join, quem nunca comprou desaparece, então se você depois calcula a média de pedidos por cliente você excluiu silenciosamente todo o denominador que te interessava. Tem uma armadilha relacionada que eu procuro nas revisões: se você escreve um left join e depois filtra por uma coluna da tabela da direita na cláusula WHERE, os nulos são eliminados e você converteu o join de volta em inner join sem perceber. O filtro precisa ir na cláusula ON. Meu hábito é contar as linhas da tabela base, rodar o join e contar de novo. Se cresceu, eu tenho um fan out. Se diminuiu, eu perdi linhas que provavelmente queria.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Por que filtrar a tabela da direita no WHERE quebra um left join?
  • Como você encontraria linhas que existem em uma tabela mas não na outra?
  • Para que serve um full outer join na prática?

Mais perguntas para Analista de Dados

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot