Las tres numeran filas dentro de una ventana. ROW_NUMBER da a cada fila un número secuencial único, así que los empates se rompen de forma arbitraria. RANK da el mismo número a las filas empatadas y luego salta, produciendo 1, 2, 2, 4. DENSE_RANK da el mismo número a las empatadas sin saltar, produciendo 1, 2, 2, 3. Usa ROW_NUMBER para deduplicar y RANK o DENSE_RANK para clasificaciones de verdad.
Por qué lo preguntan los entrevistadores
Es una comprobación rápida e inequívoca de soltura con SQL donde no hay sitio para irse por las ramas, y la consecuencia práctica importa igual: escoger una fila por grupo es una tarea diaria y ROW_NUMBER es la herramienta adecuada. Los entrevistadores también quieren que te des cuenta de que ROW_NUMBER no es determinista con los empates a menos que tu ORDER BY incluya un desempate explícito.
Cómo estructurar tu respuesta
- Di el comportamiento de numeración de cada una con el ejemplo 1, 2, 2, 4.
- Asocia cada función a la tarea para la que es correcta.
- Avisa de que ROW_NUMBER con empates necesita un desempate determinista.
- Muestra el patrón estándar para escoger la fila más reciente por grupo.
Ejemplo de respuesta
ROW_NUMBER siempre da enteros distintos, así que dos filas empatadas reciben 1 y 2 en el orden que al motor le apetezca. RANK les da 1 a las dos y luego salta a 3. DENSE_RANK les da 1 a las dos y sigue en 2. En la práctica uso ROW_NUMBER mucho más que las otras dos, porque el trabajo más común es deduplicar: particionar por customer_id, ordenar por updated_at descendente y quedarte donde row_number es igual a 1 para tener el registro más reciente por cliente. Si estoy construyendo un top diez donde los empates deben compartir posición, eso es DENSE_RANK. La trampa de ROW_NUMBER es el determinismo. Si updated_at es idéntico en dos filas, cuál te quedas puede cambiar entre ejecuciones, y he visto un panel oscilar entre dos valores exactamente por eso. Así que añado una segunda clave de ordenación, normalmente la clave primaria, para que sea estable y reproducible.
¿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 escogerías los tres productos principales por categoría?
- ¿Qué pasa con ROW_NUMBER si dos filas tienen valores de ordenación idénticos?
- ¿En qué se diferencia NTILE de estas tres?
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