COUNT
Descrição
COUNT
é uma função de agregação de janela que divide as linhas em grupos, as ordena por um campo e retorna o número total de linhas válidas (NOT NULL) no grupo. Você pode usar COUNT
junto com outras funções para calcular agregados cumulativos.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 agregada (total para essa função) em cada grupo.
Sintaxe
whereCOUNT(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
LONG
.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 umCOUNTexpressã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 (total 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 móvel (total contínuo ou contínuo) de vendas para cada colaborador:
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS UNBOUNDED PRECEDING)
Você pode calcular o total de vendas para cada linha na partição, independentemente dos campos na cláusula ORDER BY:
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
Você pode calcular o total de 12 meses móveis:
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)
O
Month
O campo deve ser um tipo de campo numérico, como Inteiro ou Numérico.Você pode calcular o total acumulado no ano anterior:
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Year] RANGE 1 PRECEDING)
O
Year
O campo deve ser um tipo de campo numérico, como Inteiro ou Numérico.