RANK
Descripción
RANK
es una función de agregado de ventana que se utiliza para asignar un número de clasificación a cada fila de un grupo. Si varias filas tienen el mismo valor de clasificación (hay un empate), Workday asigna el mismo valor de clasificación a las filas empatadas y omite la siguiente posición de clasificación.El
PARTITION BY
determina qué campos se utilizarán para dividir un conjunto de filas de entrada en grupos.El
ORDER BY
determina cómo ordenar las filas en la partición antes de que se clasifiquen. Workday separa las filas de entrada en grupos según los campos de partición, ordena las filas según los campos de ordenación y, a continuación, calcula la expresión agregada (rango para esta función) en cada grupo. Las filas clasificadas de cada grupo comienzan en 1.
Sintaxis
RANK()OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Valor devuelto
Devuelve un valor de tipo
Integer
.Parámetros de entrada
- OVER()
- ObligatorioOVERdebe utilizarse en unRANKexpresión
- PARTICIÓN PORcampo_partición
- Es obligatorio. Utilizar elPARTITION BYpara especificar uno o varios campos que se utilizarán para dividir un grupo de filas de entrada. Puede especificar cualquier tipo de campo excepto Moneda. Ejemplo: especifica el campo Mes como campo de partición, por lo que Workday agrupa en una sola partición todos los registros que tienen el mismo valor para Mes.
- ORDER BYordering_field
- Es obligatorio. Utilizar elORDER BYpara especificar cómo ordenar las filas de entrada en la partición utilizando los valores del campo especificado dentro de cada partición. Puede especificar cualquier tipo de campo excepto Moneda.Puede utilizar elDESCoASCpalabras clave para ordenar en orden descendente (valores de mayor a menor, los valores NULL son los últimos) o ascendente (valores de menor a mayor, los valores NULL son los primeros) para cada campo de ordenación. Si no especifica un criterio de ordenación para un campo de ordenación, Workday ordena automáticamente las filas en orden ascendente.
Ejemplos
Ejemplo: tiene un conjunto de datos con estas filas y campos.
Empleado | Fecha de venta | Ventas |
|---|---|---|
Goh | 12/31/2018 | 140 |
Goh | 11/30/2018 | 60 |
Goh | 10/31/2018 | 140 |
Freeman | 12/31/2018 | 160 |
Freeman | 11/30/2018 | 60 |
Freeman | 10/31/2018 | 110 |
Herrero | 12/31/2018 | 140 |
Herrero | 11/30/2018 | 60 |
Herrero | 10/31/2018 | 120 |
Puede clasificar las ventas de cada empleado en orden descendente, de modo que las ventas más altas reciban la clasificación 1. Utilice esta expresión en el campo
Clasificar ventas por empleado
:RANK() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
Obtiene los siguientes resultados:
Empleado | Fecha de venta | Ventas | Clasificar ventas por empleado |
|---|---|---|---|
Goh | 12/31/2018 | 140 | 1 |
Goh | 10/31/2018 | 140 | 1 |
Goh | 11/30/2018 | 60 | 3 |
Freeman | 12/31/2018 | 160 | 1 |
Freeman | 10/31/2018 | 110 | 2 |
Freeman | 11/30/2018 | 60 | 3 |
Herrero | 12/31/2018 | 140 | 1 |
Herrero | 10/31/2018 | 120 | 2 |
Herrero | 11/30/2018 | 60 | 3 |
También puede clasificar las ventas de cada fecha en orden descendente, de modo que las ventas más altas reciban la clasificación 1. Utilice esta expresión en el campo
Clasificar ventas por fecha
:RANK() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
Obtiene los siguientes resultados:
Empleado | Fecha de venta | Ventas | Clasificar ventas por fecha |
|---|---|---|---|
Freeman | 12/31/2018 | 160 | 1 |
Goh | 12/31/2018 | 140 | 2 |
Herrero | 12/31/2018 | 140 | 2 |
Goh | 11/30/2018 | 60 | 1 |
Freeman | 11/30/2018 | 60 | 1 |
Herrero | 11/30/2018 | 60 | 1 |
Goh | 10/31/2018 | 140 | 1 |
Herrero | 10/31/2018 | 120 | 2 |
Freeman | 10/31/2018 | 110 | 3 |
Tenga en cuenta que a los valores empatados se les asigna el mismo número de clasificación y se omite la siguiente posición de clasificación.