Middle
¿En qué se diferencia RANK de DENSE_RANK?
sobes.tech AI
Respuesta de la IA
RANK y DENSE_RANK son funciones de ventana en SQL que asignan rangos a las filas dentro de una ventana, pero difieren en su comportamiento cuando hay valores iguales (es decir, en empates).
-
RANK(): Asigna el mismo rango a valores iguales, pero omite los rangos siguientes. Por ejemplo, si dos filas comparten el primer lugar, ambas obtienen el rango 1, y la siguiente fila obtiene el rango 3 (se omite el 2).
-
DENSE_RANK(): También asigna el mismo rango a valores iguales, pero no omite rangos. En el mismo ejemplo, dos filas con rango 1, la siguiente obtiene el rango 2.
Ejemplo:
| Valor | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
De esta forma, DENSE_RANK() da rangos densos sin saltos, mientras que RANK() considera los saltos en caso de igualdad.