MAX
Descrição
MAX
é uma função de agregação de janela que divide as linhas em grupos, ordena as linhas por um campo e retorna o valor máximo (mais alto) no grupo.O
PARTITION BY
A cláusula determina quais campos usar para dividir um conjunto de linhas de entrada em grupos. O ORDER BY
A cláusula determina como as linhas na partição são ordenadas.O Workday separa as linhas de entrada em grupos de acordo com os campos de particionamento, ordena as linhas de acordo com os campos de ordenação e calcula a expressão de agregação (máximo para essa função) em cada grupo.
Sintaxe
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 de retorno
O valor de retorno é do mesmo tipo de campo que o valor de entrada.
Parâmetros de entrada
- input_field
- É obrigatório. O campo no qual executar a função de agregação. Você pode usar qualquer campo numérico ou um campo de moeda.
- OVER()
- Obrigatório.OVERdeve ser usado em um período deMAXexpressão.
- PARTITION BYpartição_field
- É obrigatório. Use as teclasPARTITION BYPara especificar um ou mais campos a serem usados para particionar um grupo de linhas de entrada. Você pode especificar qualquer tipo de campo, exceto Moeda. Exemplo: você especifica o campo Mês como o campo de partição, para que o Workday agrupe em uma única partição todos os registros que têm o mesmo valor para Mês.
- ORDER BYorder_field
- É obrigatório. Use as teclasORDER BYpara especificar como ordenar as linhas de entrada na partição usando os valores no campo especificado dentro de cada partição. Você pode especificar qualquer tipo de campo, exceto Moeda. No entanto, você deve usar um tipo de campo numérico, como Inteiro ou Numérico quando usar oRANGEcláusulaVocê pode usar o botãoDESCouASCPalavras-chave para classificar em ordem decrescente (valores do mais alto para o menor, valores NULL são os últimos) ou crescente (valores do menor para o maior, valores NULL são os primeiros) para cada campo de ordenação. Se você não especifica uma ordem de classificação para um campo de ordenação, o Workday classifica as linhas automaticamente em ordem crescente.
- LINHAS | INTERVALO
- É obrigatório. OROWSeRANGEAs cláusulas definem o número específico de linhas (em relação à linha atual) dentro da partição especificando uma quadro de janela. Você define a estrutura da janela especificando os pontos de início e de término dentro da partição, conhecidos como limites da janela. A estrutura da janela é o conjunto de linhas de entrada em cada partição sobre a qual calcular a expressão de agregação (máxima para esta função). A estrutura da janela pode incluir uma, várias ou todas as linhas da partição.AmbasROWSeRANGEespecificar o intervalo de linhas em relação à linha atual, masRANGEopera logicamente em valores (associação lógica) eROWSopera fisicamente em linhas do conjunto de dados (associação física).RANGElimita o quadro de janela para conter linhas com valores dentro do intervalo especificado, relativo ao valor atual.ROWSlimita a estrutura da janela para conter as linhas que estão fisicamente próximas à linha atual.UsoRANGEpara definir limites absolutos da janela, como os últimos três meses ou o acumulado no ano. Quando você usaRANGE, oORDER BYA cláusula deve usar um tipo de campo numérico, como Inteiro ou Numérico.Exemplo: suponha que você tenha um campo de números inteiros chamado MonthNum que represente o número do mês no ano (valores de 1 a 12). Para especificar todos os valores dos últimos três meses, classifique por MonthNum e useRANGE BETWEEN 2 PRECEDING AND CURRENT ROW. Essa cláusula RANGE inclui o mês atual e os dois meses anteriores, resultando em um total de três meses.Quando você publica um conjunto de dados que contém uma função de janela usandoRANGE, o número de linhas na janela deve ser igual ou inferior a 1.000. Se uma janela específica excede 1.000 linhas, a tarefa de publicação falha.
- win_boundary
- É obrigatório. Os limites da janela definem os pontos inicial e final da caixa da janela. Os limites da janela são relativos à linha atual.APRECEDINGA cláusula define um limite de janela que é inferior à linha atual (o número de linhas a incluir antes da linha atual). OFOLLOWINGA cláusula define um limite de janela que é maior que a linha atual (o número de linhas a serem incluídas após a linha atual).Se você especifica somente um limite de janela, o Workday usa a linha atual como o outro limite na caixa de janela (limite superior ou inferior, dependendo da sintaxe da expressão). OUNBOUNDEDA palavra-chave inclui todas as linhas na direção especificada. Quando você precisar especificar o início e o fim de uma estrutura de janela, use oBETWEENeANDpalavras-chaveAo especificar um número específico de linhas, ovalordeve ser igual ou inferior a 100.Exemplo:ROWS 2 PRECEDINGsignifica que a janela tem um tamanho de três linhas, começando com as duas linhas anteriores até, e incluindo, a linha atual.Exemplo:ROWS UNBOUNDED FOLLOWINGsignifica que a janela começa com a linha atual e inclui essa e todas as linhas posteriores.
Exemplos
Exemplo: você tem um conjunto de dados com essas linhas e campos.
Organização de supervisão | Trimestre | Name | Alteração de remuneração |
|---|---|---|---|
Marketing | 2019-Q1 | Goh | 2000.00 |
Marketing | 2019-Q1 | Freeman | 1000,00 |
Marketing | 2019-Q1 | Smith | 2500.00 |
Consultando | 2019-Q1 | Gomez | 5000.00 |
Consultando | 2019-Q1 | Kimura | 3000.00 |
Consultando | 2019-Q1 | Fitz | 3500.00 |
Consultando | 2019-Q2 | Gomez | 0 |
Consultando | 2019-Q2 | Kimura | 2000.00 |
Consultando | 2019-Q2 | Fitz | 1.500,00 |
Você pode calcular a maior alteração na remuneração (campo
Alteração de remuneração
) para cada organização de supervisão em cada trimestre.Para garantir que o Workday retorne o mesmo valor para todas as linhas em uma partição, organize as linhas em ordem decrescente (
DESC
) de acordo com o mesmo campo que o campo de entrada, de forma que a alteração de remuneração mais alta apareça primeiro em cada partição.Use esta expressão no campo
Alteração de remuneração máxima
:MAX([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
Você obtém estes resultados:
Organização de supervisão | Trimestre | Name | Alteração de remuneração | Alteração de remuneração máxima |
|---|---|---|---|---|
Consultando | 2019-Q1 | Gomez | 5000.00 | 5000.00 |
Consultando | 2019-Q1 | Fitz | 3500.00 | 5000.00 |
Consultando | 2019-Q1 | Kimura | 3000.00 | 5000.00 |
Consultando | 2019-Q2 | Kimura | 2000.00 | 2000.00 |
Consultando | 2019-Q2 | Fitz | 1.500,00 | 2000.00 |
Consultando | 2019-Q2 | Gomez | 0 | 2000.00 |
Marketing | 2019-Q1 | Smith | 2500.00 | 2500.00 |
Marketing | 2019-Q1 | Goh | 2000.00 | 2500.00 |
Marketing | 2019-Q1 | Freeman | 1000,00 | 2500.00 |