MAX
Descripción
MAX
es una función de agregado de ventana que divide las filas en grupos, las ordena por un campo y devuelve el valor máximo (el más alto) del grupo.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.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 (máximo para esta función) en cada grupo.
Sintaxis
whereMAX(input_field)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]]RANGEBETWEENvaluePRECEDINGANDCURRENT ROW|ROWSwin_boundary|BETWEENwin_boundaryANDwin_boundary)win_boundarycan be:UNBOUNDED PRECEDINGvaluePRECEDINGUNBOUNDED FOLLOWINGvalueFOLLOWINGCURRENT ROW
Valor devuelto
El valor devuelto es el mismo tipo de campo que el valor de entrada.
Parámetros de entrada
- input_field
- Es obligatorio. El campo en el que se va a realizar la función de agregado. Puede utilizar cualquier campo numérico o un campo de moneda.
- OVER()
- ObligatorioOVERdebe utilizarse en unMAXexpresió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. Sin embargo, debe utilizar un tipo de campo numérico, como Entero o Numérico cuando utilice el campoRANGEcláusulaPuede 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.
- FILAS | RANGO
- Es obligatorio. ElROWSyRANGELas cláusulas definen el número específico de filas (en relación con la fila actual) dentro de la partición especificando un marco de ventana. El marco de la ventana se define especificando los puntos inicial y final dentro de la partición, conocidos como límites de ventana. El marco de ventana es el conjunto de filas de entrada de cada partición sobre las que se calcula la expresión de agregado (máximo para esta función). El marco de la ventana puede incluir una, varias o todas las filas de la partición.AmbosROWSyRANGEespecificar el rango de filas relativo a la fila actual, peroRANGEopera lógicamente en valores (asociación lógica) yROWSopera físicamente en las filas del conjunto de datos (asociación física).RANGElimita el marco de la ventana para que contenga filas que tengan sus valores dentro del rango especificado, en relación con el valor actual.ROWSlimita el marco de la ventana para que contenga filas que estén físicamente al lado de la fila actual.UtilizarRANGEpara definir límites de ventana absolutos, como los últimos 3 meses o el año hasta la fecha. Cuando utilizaRANGE, elORDER BYLa cláusula debe utilizar un tipo de campo numérico, como Entero o Numérico.Ejemplo: suponga que tiene un campo Integer denominado MonthNum que representa el número de mes del año (valores del 1 al 12). Para especificar todos los valores de los últimos 3 meses, ordene por MonthNum y utiliceRANGE BETWEEN 2 PRECEDING AND CURRENT ROW. Esta cláusula RANGE incluye el mes actual y los dos meses anteriores, lo que da como resultado un total de tres meses.Cuando publica un conjunto de datos que contiene una función de ventana medianteRANGE, el número de filas de la ventana debe ser 1000 o menos. Si una ventana en particular supera las 1000 filas, el trabajo de publicación falla.
- win_boundary
- Es obligatorio. Los límites de la ventana definen los puntos inicial y final del marco de la ventana. Los límites de la ventana son relativos a la fila actual.APRECEDINGdefine un límite de ventana que es inferior a la fila actual (el número de filas que se incluirán antes de la fila actual). ElFOLLOWINGdefine un límite de ventana que es mayor que la fila actual (el número de filas que se incluirán después de la fila actual).Si especifica solo un límite de ventana, Workday utiliza la fila actual como el otro límite en el marco de la ventana (el límite superior o inferior en función de la sintaxis de la expresión). ElUNBOUNDEDLa palabra clave incluye todas las filas en la dirección especificada. Cuando necesite especificar el inicio y el final de un marco de ventana, utilice elBETWEENyANDpalabras claveAl especificar un número específico de filas, elvalordebe ser 100 o menos.Ejemplo:ROWS 2 PRECEDINGsignifica que la ventana tiene un tamaño de 3 filas, comenzando con las 2 filas anteriores hasta la fila actual incluida.Ejemplo:ROWS UNBOUNDED FOLLOWINGsignifica que la ventana comienza con la fila actual e incluye la fila actual y todas las filas que siguen a la fila actual.
Ejemplos
Ejemplo: tiene un conjunto de datos con estas filas y campos.
Organización de supervisión | Trimestre | Nombre | Cambio de compensación |
|---|---|---|---|
Marketing | 2019-Q1 | Goh | 2000.00 |
Marketing | 2019-Q1 | Freeman | 1000,00 |
Marketing | 2019-Q1 | Herrero | 2500,00 |
Consultoría | 2019-Q1 | Gomez | 5000,00 |
Consultoría | 2019-Q1 | Kimura | 3000.00 |
Consultoría | 2019-Q1 | Fitz | 3500,00 |
Consultoría | 2019-Q2 | Gomez | 0 |
Consultoría | 2019-Q2 | Kimura | 2000.00 |
Consultoría | 2019-Q2 | Fitz | 1500,00 |
Puede calcular el cambio más alto en la compensación (campo
Cambio de compensación
) para cada organización de supervisión en cada trimestre.Para asegurarse de que Workday devuelva el mismo valor para cada fila de una partición, ordene las filas en orden descendente (
DESC
) por el mismo campo que el campo de entrada, de modo que el cambio de compensación más alto aparezca primero en cada partición.Utilice esta expresión en el campo
Cambio máximo de compensación
:MAX([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
Obtiene los siguientes resultados:
Organización de supervisión | Trimestre | Nombre | Cambio de compensación | Cambio máximo de compensación |
|---|---|---|---|---|
Consultoría | 2019-Q1 | Gomez | 5000,00 | 5000,00 |
Consultoría | 2019-Q1 | Fitz | 3500,00 | 5000,00 |
Consultoría | 2019-Q1 | Kimura | 3000.00 | 5000,00 |
Consultoría | 2019-Q2 | Kimura | 2000.00 | 2000.00 |
Consultoría | 2019-Q2 | Fitz | 1500,00 | 2000.00 |
Consultoría | 2019-Q2 | Gomez | 0 | 2000.00 |
Marketing | 2019-Q1 | Herrero | 2500,00 | 2500,00 |
Marketing | 2019-Q1 | Goh | 2000.00 | 2500,00 |
Marketing | 2019-Q1 | Freeman | 1000,00 | 2500,00 |