ROW_NUMBER
Descripción
ROW_NUMBER
es una función de agregado de ventanas que divide las filas en grupos, las ordena por un campo y asigna un número secuencial exclusivo a cada fila de un grupo, comenzando por 1 para la primera fila de cada grupo. ROW_NUMBER
siempre asigna un valor exclusivo a cada fila de un grupo. Es posible que desee utilizar ROW_NUMBER
para crear un ID exclusivo para cada fila de su conjunto de datos.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 les asigne un número secuencial. 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 (numeración de filas para esta función) en cada grupo. Las filas numeradas de cada grupo comienzan en 1.
Sintaxis
ROW_NUMBER()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 unROW_NUMBERexpresió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 asignar un ID exclusivo a las ventas de cada empleado en orden descendente, de modo que las ventas más altas tengan la clasificación 1. Utilice esta expresión en el campo
Número de ventas por empleado
:ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
Obtiene los siguientes resultados:
Empleado | Fecha de venta | Ventas | Número de ventas por empleado |
|---|---|---|---|
Goh | 12/31/2018 | 140 | 1 |
Goh | 10/31/2018 | 140 | 2 |
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 asignar un ID exclusivo a 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
Sales Num by Date
:ROW_NUMBER() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
Obtiene los siguientes resultados:
Empleado | Fecha de venta | Ventas | Núm. de ventas por fecha |
|---|---|---|---|
Freeman | 12/31/2018 | 160 | 1 |
Goh | 12/31/2018 | 140 | 2 |
Herrero | 12/31/2018 | 140 | 3 |
Goh | 11/30/2018 | 60 | 1 |
Freeman | 11/30/2018 | 60 | 2 |
Herrero | 11/30/2018 | 60 | 3 |
Goh | 10/31/2018 | 140 | 1 |
Herrero | 10/31/2018 | 120 | 2 |
Freeman | 10/31/2018 | 110 | 3 |
También puede utilizar
ROW_NUMBER
para determinar la última versión de cada fila de un conjunto de datos que contiene varias filas por ID. En esta situación hipotética, el conjunto de datos requiere un campo de fecha que represente cuándo se actualizó la información de esa fila. Si está familiarizado con los conceptos de almacenamiento de datos, esta es una tabla de dimensiones de tipo 2 que cambia lentamente. Tiene un conjunto de datos con estas filas y campos.ID | Nombre | Región | Fecha efectiva |
|---|---|---|---|
G1 | Gorman | Oeste | 01/01/2015 |
H1 | Harris | Oeste | 01/01/2015 |
G1 | Gorman | Este | 09/01/2016 |
H1 | Harris | Este | 01/03/2017 |
H1 | Harris | Nacional | 01/20/2021 |
Para asignar el valor 1 a la última versión de cada ID, utilice esta expresión en el campo
Última versión
:ROW_NUMBER() OVER( PARTITION BY [ID] ORDER BY [Effective Date] DESC)
Obtiene los siguientes resultados:
ID | Nombre | Región | Fecha efectiva | Última versión |
|---|---|---|---|---|
G1 | Gorman | Oeste | 01/01/2015 | 2 |
H1 | Harris | Oeste | 01/01/2015 | 3 |
G1 | Gorman | Este | 09/01/2016 | 1 |
H1 | Harris | Este | 01/03/2017 | 2 |
H1 | Harris | Nacional | 01/20/2021 | 1 |
Puede filtrar por
Última versión
mediante una fase de filtro para mostrar solo la última fila de cada ID.