Saltar al contenido principal
Workday User Guide
Última actualización: 2023-06-23
COUNT

COUNT

Descripción

COUNT
es una función de agregado de ventana que divide las filas en grupos, las ordena por un campo y devuelve el número total de filas válidas (NO NULAS) del grupo. Puede utilizar
COUNT
junto con otras funciones para calcular agregados acumulativos.
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 (recuento para esta función) en cada grupo.

Sintaxis

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 devuelto

Devuelve un valor de tipo
LONG
.

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()
Obligatorio
OVER
debe utilizarse en un
COUNT
expresión
PARTICIÓN POR
campo_partición
Es obligatorio. Utilizar el
PARTITION BY
para 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 BY
ordering_field
Es obligatorio. Utilizar el
ORDER BY
para 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 campo
RANGE
cláusula
Puede utilizar el
DESC
o
ASC
palabras 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. El
ROWS
y
RANGE
Las 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 agregada (recuento para esta función). El marco de la ventana puede incluir una, varias o todas las filas de la partición.
Ambos
ROWS
y
RANGE
especificar el rango de filas relativo a la fila actual, pero
RANGE
opera lógicamente en valores (asociación lógica) y
ROWS
opera físicamente en las filas del conjunto de datos (asociación física).
RANGE
limita el marco de la ventana para que contenga filas que tengan sus valores dentro del rango especificado, en relación con el valor actual.
ROWS
limita el marco de la ventana para que contenga filas que estén físicamente al lado de la fila actual.
Utilizar
RANGE
para definir límites de ventana absolutos, como los últimos 3 meses o el año hasta la fecha. Cuando utiliza
RANGE
, el
ORDER BY
La 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 utilice
RANGE 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 mediante
RANGE
, 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.
A
PRECEDING
define 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). El
FOLLOWING
define 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). El
UNBOUNDED
La 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 el
BETWEEN
y
AND
palabras clave
Al especificar un número específico de filas, el
valor
debe ser 100 o menos.
Ejemplo:
ROWS 2 PRECEDING
significa que la ventana tiene un tamaño de 3 filas, comenzando con las 2 filas anteriores hasta la fila actual incluida.
Ejemplo:
ROWS UNBOUNDED FOLLOWING
significa que la ventana comienza con la fila actual e incluye la fila actual y todas las filas que siguen a la fila actual.

Ejemplos

Puede calcular el recuento móvil (recuento acumulado o recuento móvil) de las ventas de cada empleado:
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS UNBOUNDED PRECEDING)
Puede calcular el recuento global de ventas de cada fila de la partición, independientemente de los campos de la cláusula ORDER BY:
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
Puede calcular el recuento de 12 meses móviles:
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)
El
Month
El campo debe ser un tipo de campo numérico, como Entero o Numérico.
Puede calcular el recuento del año anterior hasta la fecha:
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Year] RANGE 1 PRECEDING)
El
Year
El campo debe ser un tipo de campo numérico, como Entero o Numérico.