SUM
Descrição
SUM
é uma função de agregação de janela que divide as linhas em grupos, as ordena por um campo e retorna o total de todos os valores no grupo. Você pode usar SUM
para calcular totais executados.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 (soma para essa função) em cada grupo.
Sintaxe
whereSUM(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
Retorna um valor do tipo
NUMERIC
, LONG
, ou DOUBLE
dependendo do tipo de input_field
.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 umSUMexpressã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 é calculada a expressão de agregação (soma 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
Você pode calcular o total atual (soma móvel ou móvel) de vendas para cada colaborador:
SUM([Sales]) OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC ROWS UNBOUNDED PRECEDING)
Você pode calcular a soma geral (total de vendas) para cada linha na partição, independentemente dos campos na cláusula ORDER BY:
SUM([Sales]) OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
Você pode calcular a soma de 12 meses móveis:
SUM([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)
O campo
Mês
deve ser do tipo de campo numérico, como Inteiro ou Numérico.Você pode calcular a soma do acumulado no ano anterior:
SUM([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Year] RANGE 1 PRECEDING)
O campo
Ano
deve ser um tipo de campo numérico, como Inteiro ou Numérico.