La función RANK_DENSE evalúa una expresión y devuelve su rango o posición para la fila siendo considerada en la tabla tras comparar el resultado con el conjunto de resultados de todas las filas, recibiendo valores idénticos el mismo rango pero sin dejar rangos sin asignar.
RANK_DENSE(
<expresión>
[, <orden>]
)
- expresión: expresión a evaluar para todas las filas de la tabla
- orden: (opcional) cadena de texto que deberá tomar los valores 'asc' o 'desc' (valor por defecto) que determinará el orden de los rangos
La función RANK_DENSE devuelve un número entero.
Valores idénticos reciben el mismo rango (el mayor de los que recibirían si recibiesen rangos diferentes), pero no se dejan rangos sin asignar. De este modo, los valores 1, 3, 3, 5 reciben los rangos 3, 2, 2, 1. En este contexto se presupone que el rango 1 es el mayor.
Las etiquetas 'asc' o 'desc' pueden estar escritas en mayúscula o minúsculas y se pueden encerrar entre comillas simples o dobles.
Los valores nulos son ignorados y no modifican de forma alguna los rangos asignados.
Si partimos de un listado con productos y número de unidades vendidas:
...podemos asignar el rango correspondiente a cada producto con el siguiente campo calculado:
Rango =
RANK_DENSE(SUM([Unidades]))
Si añadimos este campo al estante de filas -definiéndolo como campo discreto-, obtenemos el resultado buscado:
Vemos cómo, en efecto, no hay rangos sin asignar entre el mínimo y el máximo.