Ir para o conteúdo principal
Workday User Guide
Última atualização: 2023-06-23
COUNT

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

COUNT
(
input_field
)
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]]
RANGE
BETWEEN
value
PRECEDING
AND
CURRENT ROW
|
ROWS
win_boundary
|
BETWEEN
win_boundary
AND
win_boundary
)
where
win_boundary
can be:
UNBOUNDED PRECEDING
value
PRECEDING
UNBOUNDED FOLLOWING
value
FOLLOWING
CURRENT 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.
OVER
deve ser usado em um
COUNT
expressão.
PARTITION BY
partição_field
É obrigatório. Use as teclas
PARTITION BY
Para 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 BY
order_field
É obrigatório. Use as teclas
ORDER BY
para 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 o
RANGE
cláusula
Você pode usar o botão
DESC
ou
ASC
Palavras-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. O
ROWS
e
RANGE
As 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.
Ambas
ROWS
e
RANGE
especificar o intervalo de linhas em relação à linha atual, mas
RANGE
opera logicamente em valores (associação lógica) e
ROWS
opera fisicamente em linhas do conjunto de dados (associação física).
RANGE
limita o quadro de janela para conter linhas com valores dentro do intervalo especificado, relativo ao valor atual.
ROWS
limita a estrutura da janela para conter as linhas que estão fisicamente próximas à linha atual.
Uso
RANGE
para definir limites absolutos da janela, como os últimos três meses ou o acumulado no ano. Quando você usa
RANGE
, o
ORDER BY
A 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 use
RANGE 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 usando
RANGE
, 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.
A
PRECEDING
A cláusula define um limite de janela que é inferior à linha atual (o número de linhas a incluir antes da linha atual). O
FOLLOWING
A 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). O
UNBOUNDED
A 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 o
BETWEEN
e
AND
palavras-chave
Ao especificar um número específico de linhas, o
valor
deve ser igual ou inferior a 100.
Exemplo:
ROWS 2 PRECEDING
significa 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 FOLLOWING
significa 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.