La función RANK_UNIQUE 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, asignando diferentes rangos a valores iguales.
RANK_UNIQUE(
<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_UNIQUE devuelve un número entero.
Valores idénticos reciben distintos rangos. En este contexto se presupone que el rango 1 es el mayor. Los demás rangos no varían. De este modo, los valores 1, 3, 3, 5 reciben los rangos 4, 2, 3, 1. Obsérvese que, con este criterio, no puede haber rangos sin asignar.
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.
Partimos de la siguiente tabla de valores:
Podemos asignar rangos según los criterios vistos (rangos distintos a valores idénticos) con el siguiente campo calculado:
Rango =
RANK_UNIQUE(SUM([Unidades]))
Si llevamos los campos de la tabla y el campo calculado al lienzo (dando a éste último formato discreto), obtenemos el siguiente resultado:
Este resultado es el mismo que obtendríamos especificando orden descendente:
Rango =
RANK_UNIQUE(SUM([Unidades]), 'desc')
Es decir, al valor más elevado (8) se le asigna el mayor rango (1).