COUNT
Description
COUNT
est une fonction d'agrégation de fenêtre qui répartit les lignes en groupes, trie les lignes en fonction d'un champ et renvoie le nombre total de lignes valides (NOT NULL) dans le groupe. Vous pouvez utiliser COUNT
avec d'autres fonctions pour calculer les cumuls cumulés.Le
PARTITION BY
La clause d'entrée détermine les champs à utiliser pour répartir un ensemble de lignes d'entrée en groupes. Le ORDER BY
La clause .Workday sépare les lignes d'entrée en groupes en fonction des champs de partition, classe les lignes en fonction des champs de tri, puis calcule l'expression d'agrégation (nombre pour cette fonction) dans chaque groupe.
Syntaxe
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
Valeur de renvoi
Renvoie une valeur de type
LONG
.Paramètres d'entrée
- input_field
- Est obligatoire. Le champ sur lequel exécuter la fonction d'agrégation. Vous pouvez utiliser n'importe quel champ numérique ou Devise.
- OVER()
- Obligatoire.OVERdoit être utilisé dans unCOUNTexpression.
- PARTITION BYpartitioning_field
- Est obligatoire. Utilisez l'optionPARTITION BYclause pour spécifier un ou plusieurs champs à utiliser pour partitionner un groupe de lignes d'entrée. Vous pouvez indiquer n'importe quel type de champ sauf Devise. Exemple : si vous spécifiez le champ Mois comme champ de partitionnement, Workday regroupe donc dans une partition unique tous les enregistrements ayant la même valeur pour Mois.
- ORDER BYordering_field
- Est obligatoire. Utilisez l'optionORDER BYclause pour indiquer comment trier les lignes d'entrée dans la partition en utilisant les valeurs du champ spécifié dans chaque partition. Vous pouvez indiquer n'importe quel type de champ sauf Devise. Vous devez cependant utiliser un type de champ numérique, tel que Nombre entier ou Numérique lorsque vous utilisez leRANGEclause.Vous pouvez utiliser laDESCouASCMots-clés pour trier par ordre décroissant (valeurs de haut à bas, les valeurs NULL sont les dernières) ou par ordre croissant (valeurs de basse à haute, les valeurs NULL sont les premières) pour chaque champ de tri. Si vous n'indiquez aucun ordre de tri pour un champ de tri, Workday trie automatiquement les lignes par ordre croissant.
- ROWS | PLAGE DES VALEURS
- Est obligatoire. LeROWSetRANGELes clauseS définissent le nombre spécifique de lignes (par rapport à la ligne en cours) dans la partition en spécifiant une zone de fenêtre. Vous définissez le cadre de la fenêtre en indiquant des points de début et de fin dans la partition, appelés limites de la fenêtre. L'intervalle de fenêtre est l'ensemble des lignes d'entrée dans chaque partition sur lesquelles calculer l'expression d'agrégation (nombre pour cette fonction). Le cadre de la fenêtre peut inclure une, plusieurs ou toutes les lignes de la partition.Les deuxROWSetRANGEindiquez la plage de lignes par rapport à la ligne actuelle, maisRANGEopère de façon logique sur les valeurs (association logique) etROWSopère réellement sur les lignes du jeu de données (association physique).RANGElimite le cadre de la fenêtre de manière à contenir les lignes dont les valeurs sont comprises dans la plage spécifiée, par rapport à la valeur actuelle.ROWSlimite le cadre de la fenêtre afin qu'il puisse contenir les lignes qui se trouvent immédiatement à côté de la ligne actuelle.UtiliserRANGEpour définir les limites de fenêtre absolues, telles que les trois derniers mois ou le cumul depuis le début de l'exercice. Lorsque vous utilisezRANGE, leORDER BYLa clause doit utiliser un type de champ numérique, tel que Entier ou Numérique.Exemple : imaginons que vous avez un champ Entier nommé MonthNum qui représente le nombre de mois dans l'année (valeurs 1 à 12). Pour indiquer toutes les valeurs des trois derniers mois, vous procéderez à un tri par MonthNum et utiliserRANGE BETWEEN 2 PRECEDING AND CURRENT ROW. Cette clause RANGE inclut le mois en cours et les deux mois précédents, ce qui donne un total de trois mois.Lorsque vous publiez un jeu de données contenant une fonction de fenêtre en utilisantRANGE, le nombre de lignes dans la fenêtre doit être inférieur ou égal à 1 000. Si une fenêtre particulière dépasse 1 000 lignes, la tâche de publication échoue.
- sélectionnés
- Est obligatoire. Les limites de fenêtre définissent les points de début et de fin du cadre de la fenêtre. Les limites de la fenêtre sont exprimées en fonction de la ligne en cours.APRECEDINGLa clause définit une limite de fenêtre inférieure à la ligne en cours (nombre de lignes à inclure avant la ligne en cours). LeFOLLOWINGLa clause définit une limite de fenêtre supérieure à la ligne en cours (nombre de lignes à inclure après la ligne en cours).Si vous indiquez une seule limite de fenêtre, Workday utilise la ligne en cours comme autre limite dans le cadre de fenêtre (limite supérieure ou inférieure selon la syntaxe de l'expression). LeUNBOUNDEDLe mot-clé inclut toutes les lignes dans le sens indiqué. Lorsque vous devez indiquer à la fois le début et la fin d'un cadre de fenêtre, utilisez l'optionBETWEENetANDMots-clés.Lorsque vous indiquez un nombre spécifique de lignes, lavaleurdoit être inférieure ou égale à 100.Exemple :ROWS 2 PRECEDINGsignifie que la fenêtre a 3 lignes, en commençant par 2 lignes précédant et incluant la ligne en cours.Exemple :ROWS UNBOUNDED FOLLOWINGsignifie que la fenêtre commence par la ligne en cours et inclut la ligne en cours ainsi que toutes les lignes qui suivent cette ligne.
Exemples
Vous pouvez calculer le nombre de mouvements (nombre exécuté ou mobile) des ventes pour chaque employé :
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS UNBOUNDED PRECEDING)
Vous pouvez calculer le nombre global des ventes pour chaque ligne de la partition, indépendamment des champs de la clause ORDER BY :
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
Vous pouvez calculer le nombre sur 12 mois glissants :
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)
Le
Month
Le champ doit être de type numérique, tel que Entier ou Numérique.Vous pouvez calculer le nombre de cumuls depuis le début de l'exercice précédent :
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Year] RANGE 1 PRECEDING)
Le
Year
Le champ doit être de type numérique, tel que Entier ou Numérique.