Primeiro defina o que significa duplicata, já que cópias exatas e duplicatas de negócio são problemas diferentes. Para encontrá-las, faça GROUP BY pela chave pretendida e filtre com HAVING COUNT(*) maior que um. Para removê-las, use ROW_NUMBER particionado por essa chave com um ORDER BY determinístico, depois apague ou exclua tudo em que o número é maior que um, mantendo a linha mais recente ou mais completa.
Por que os entrevistadores perguntam isso
Lidar com duplicatas é tarefa semanal e uma fonte comum de métricas infladas. Os entrevistadores querem ver que você esclarece a definição de duplicata antes de escrever SQL, que você usa uma window function em vez de um self join frágil, e que você escolhe qual cópia manter de forma deliberada e não aleatória.
Como estruturar sua resposta
- Pergunte o que conta como duplicata antes de encostar no SQL.
- Detecte com GROUP BY mais HAVING COUNT maior que um.
- Deduplique com ROW_NUMBER sobre uma partição e uma ordenação estável.
- Diga a regra de qual linha sobrevive e por quê.
- Investigue a causa a montante em vez de só limpar.
Exemplo de resposta
Eu perguntaria primeiro o que duplicata significa aqui, porque uma linha totalmente idêntica normalmente quer dizer que uma carga rodou duas vezes, enquanto duas linhas do mesmo cliente com e-mails diferentes são um problema de entrada de dados que precisa de uma decisão de negócio. Para encontrá-las eu agrupo pela chave pretendida e uso HAVING COUNT maior que um, o que também me diz o tamanho do problema. Para a remoção eu uso ROW_NUMBER particionado por essa chave, ordenado por updated_at decrescente com a chave primária como desempate para ficar reproduzível, e mantenho a linha número um. Se eu não tenho permissão para apagar, a mesma lógica vai para uma view. A parte que eu tento não pular é perguntar de onde elas vieram. Limpar duplicatas toda segunda de manhã é sintoma. Da última vez que eu rastreei isso, um job de ingestão com retry estava fazendo append em vez de merge, e consertar aquilo levou uma hora e acabou de vez com a limpeza semanal.
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 funcionaPerguntas de acompanhamento que você pode esperar
- Como você decide qual das linhas duplicadas manter?
- Como você deduplicaria quando a chave é imprecisa, como nome e endereço?
- O que você checaria a montante para impedir que as duplicatas voltem?
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