La función RANK_MODIFIED 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 el mismo rango a valores iguales, siendo éste el menor de los que recibirían si se asignasen rangos consecutivos distintos.
RANK_MODIFIED(
<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_MODIFIED devuelve un número entero.
Valores idénticos reciben el mismo rango (el menor de los que recibirían si recibiesen rangos diferentes). 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, 3, 3, 1. Obsérvese que, con este criterio, puede haber rangos sin asignar (como el 2, en el ejemplo visto).
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 una tabla en la que se muestren las ventas por país:
...podemos añadir una columna que nos indique el rango o posición de cada cifra de ventas con respecto a las demás (asignando el menor rango en caso de coincidencia). Para esto podemos crear el siguiente campo calculado:
Rango =
RANK_MODIFIED(SUM([Amount]), "asc")
Si añadimos este campo calculado al estante de filas, vemos el resultado:
En el caso de que existan valores idénticos, éstos recibirán el mismo rango, siendo el menor de los que recibirían si se asignasen rangos distintos consecutivos. Por ejemplo, si partimos de la siguiente tabla de datos:
...podemos asignar rangos bajo este criterio con el siguiente campo calculado:
Rango =
RANK_MODIFIED(SUM([Unidades]))
Si llevamos los campos de la tabla y el campo calculado al lienzo (dando a Rango tipo discreto) obtenemos el siguiente resultado:
Como vemos, los valores 4 reciben el mismo rango 3 (si no se asignase el mismo rango, uno de los "4" recibiría el rango 2 y otro el 3, de forma que se asigna el "menor" -entendiendo que el rango 1 es el mayor-).