Primero define qué significa duplicado, ya que las copias exactas y los duplicados de negocio son problemas distintos. Para encontrarlos, agrupa con GROUP BY por la clave prevista y filtra con HAVING COUNT(*) mayor que uno. Para eliminarlos, usa ROW_NUMBER particionado por esa clave con un ORDER BY determinista y luego borra o excluye todo aquello cuyo número sea mayor que uno, quedándote con la fila más reciente o más completa.
Por qué lo preguntan los entrevistadores
Gestionar duplicados es una tarea semanal y una fuente común de métricas infladas. Los entrevistadores quieren ver que aclaras la definición de duplicado antes de escribir SQL, que usas una función de ventana en vez de un self join frágil, y que eliges deliberadamente qué copia conservar en vez de al azar.
Cómo estructurar tu respuesta
- Pregunta qué cuenta como duplicado antes de tocar SQL.
- Detéctalos con GROUP BY más HAVING COUNT mayor que uno.
- Deduplica con ROW_NUMBER sobre una partición y una ordenación estable.
- Di la regla de qué fila sobrevive y por qué.
- Investiga la causa aguas arriba en vez de solo limpiar.
Ejemplo de respuesta
Primero preguntaría qué significa duplicado aquí, porque una fila totalmente idéntica suele significar que una carga se ejecutó dos veces, mientras que dos filas del mismo cliente con correos distintos son un problema de entrada de datos que necesita una decisión de negocio. Para encontrarlos agrupo por la clave prevista y uso HAVING COUNT mayor que uno, lo que además me dice la magnitud del problema. Para eliminarlos uso ROW_NUMBER particionado por esa clave, ordenado por updated_at descendente con la clave primaria como desempate para que sea reproducible, y me quedo con el número uno. Si no tengo permiso para borrar, la misma lógica va a una vista. La parte que intento no saltarme es preguntar de dónde salieron. Limpiar duplicados cada lunes por la mañana es un síntoma. La última vez que lo rastreé, un trabajo de ingesta reintentado estaba añadiendo en vez de hacer merge, y arreglar eso costó una hora y acabó con la limpieza semanal para siempre.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo decides con cuál de las filas duplicadas te quedas?
- ¿Cómo deduplicarías cuando la clave es difusa, como un nombre y una dirección?
- ¿Qué comprobarías aguas arriba para que los duplicados no vuelvan?
Más preguntas para Analista de datos
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas