Passer au contenu principal
Workday User Guide
Dernière mise à jour : 2023-06-23
SUM

SUM

Description

SUM
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 total de toutes les valeurs du groupe. Vous pouvez utiliser
SUM
pour calculer les totaux 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 (somme pour cette fonction) dans chaque groupe.

Syntaxe

SUM
(
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

Valeur de renvoi

Renvoie une valeur de type
NUMERIC
,
LONG
, ou
DOUBLE
selon le type d'
input_field
.

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.
OVER
doit être utilisé dans un
SUM
expression.
PARTITION BY
partitioning_field
Est obligatoire. Utilisez l'option
PARTITION BY
clause 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 BY
ordering_field
Est obligatoire. Utilisez l'option
ORDER BY
clause 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 le
RANGE
clause.
Vous pouvez utiliser la
DESC
ou
ASC
Mots-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. Le
ROWS
et
RANGE
Les 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 agrégée (somme pour cette fonction). Le cadre de la fenêtre peut inclure une, plusieurs ou toutes les lignes de la partition.
Les deux
ROWS
et
RANGE
indiquez la plage de lignes par rapport à la ligne actuelle, mais
RANGE
opère de façon logique sur les valeurs (association logique) et
ROWS
opère réellement sur les lignes du jeu de données (association physique).
RANGE
limite 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.
ROWS
limite le cadre de la fenêtre afin qu'il puisse contenir les lignes qui se trouvent immédiatement à côté de la ligne actuelle.
Utiliser
RANGE
pour 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 utilisez
RANGE
, le
ORDER BY
La 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 utiliser
RANGE 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 utilisant
RANGE
, 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.
A
PRECEDING
La clause définit une limite de fenêtre inférieure à la ligne en cours (nombre de lignes à inclure avant la ligne en cours). Le
FOLLOWING
La 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). Le
UNBOUNDED
Le 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'option
BETWEEN
et
AND
Mots-clés.
Lorsque vous indiquez un nombre spécifique de lignes, la
valeur
doit être inférieure ou égale à 100.
Exemple :
ROWS 2 PRECEDING
signifie 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 FOLLOWING
signifie 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 total cumulé (somme mobile ou mobile) des ventes pour chaque salarié :
SUM([Sales]) OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC ROWS UNBOUNDED PRECEDING)
Vous pouvez calculer la somme globale (total des ventes) pour chaque ligne de la partition, indépendamment des champs de la clause ORDER BY :
SUM([Sales]) OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
Vous pouvez calculer la somme des 12 mois glissants :
SUM([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)
Le champ
Mois
doit être de type numérique, tel que Entier ou Numérique.
Vous pouvez calculer la somme du cumul de l'exercice précédent :
SUM([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Year] RANGE 1 PRECEDING)
Le champ
Année
doit être de type numérique, tel que Entier ou Numérique.