LEAD
Description
LEAD
est une fonction d'agrégation de fenêtre qui partitionne les rangées en groupes, trie les rangées en fonction d'un champ et retourne la valeur d'un champ dans la rangée au décalage précisé après (en dessous) de la rangée actuelle dans le groupe.La
PARTITION BY
La clause détermine quels champs utiliser pour partitionner un ensemble de rangées d'entrée en groupes. La ORDER BY
La clause détermine comment classer les rangées dans la partition.Workday sépare les rangées d'entrée en groupes en fonction des champs de partitionnement, trie les rangées en fonction des champs de classement, puis calcule l'expression d'agrégation (personne responsable pour cette fonction) dans chaque groupe.
Syntaxe
LEAD(input_field,offset,default_value)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Valeur de retour
Retourne une valeur par rangée du même type que
Input_field
.Paramètres d'entrée
- input_field
- Est obligatoire. Le champ sur lequel exécuter la fonction d'agrégation. Vous pouvez indiquer n’importe quel type de champ.
- offset
- Facultatif. Nombre de rangées après la rangée actuelle dont la valeur doit être retournée. Le nombre littéral doit être supérieur ou égal à zéro (0) et inférieur ou égal à 100. Si vous ne précisez pas le décalage, Workday utilise la valeur de 1.
- default_value
- Facultatif. Retourne la valeur de cette fonction lorsque la rangée de décalage est en dehors de la fenêtre actuellement définie ou lorsque la valeur de la rangée de décalage est NULL.default_valuedoit être du même type queInput_field. Si vous ne précisez pas de valeur par défaut, Workday utilise la valeur de type NULL.
- OVER()
- Est obligatoire.OVERdoit être utilisé dans un délai d'unLEADl'expression.
- PARTITION BYpartitioning_field
- Est obligatoire. Utilisez laPARTITION BYclause pour indiquer un ou plusieurs champs à utiliser pour partitionner un groupe de rangées d'entrée. Vous pouvez indiquer n’importe quel type de champ sauf Devise. Exemple : vous indiquez le champ Mois comme champ de partitionnement. Par conséquent, Workday regroupe dans une seule partition tous les enregistrements qui ont la même valeur pour le mois.
- ORDER BYordering_field
- Est obligatoire. Utilisez laORDER BYclause pour indiquer comment classer les rangées d'entrée dans la partition en utilisant les valeurs du champ précisé dans chaque partition. Vous pouvez indiquer n’importe quel type de champ sauf Devise.Vous pouvez utiliser leDESCouASCdes mots-clés à trier par ordre décroissant (les valeurs de haut à bas, les valeurs NULL sont les dernières) ou par ordre croissant (les valeurs de bas à hautes, les valeurs de NULL sont les premières) pour chaque champ de tri. Si vous ne précisez pas d’ordre de tri pour un champ de tri, Workday trie automatiquement les rangées par ordre croissant.
Exemples
Exemple : vous avez un jeu de données avec ces rangées et ces champs.
row_ID | Employee_Name | Eff_Date | Salaire |
|---|---|---|---|
1 | Goh | 1/1/18 | 49000 |
2 | Goh | 1/1/19 | 56000 |
3 | Goh | 1/1/17 | 44000 |
4 | Freeman | 1/1/18 | 65000 |
5 | Freeman | 1/1/17 | 57000 |
6 | Freeman | 1/1/19 | 69000 |
7 | Smith | 1/1/18 | 51000 |
8 | Smith | 1/1/19 | 56000 |
9 | Smith | 1/1/16 | 44000 |
Vous pouvez classer les rangées de chaque employé par ordre décroissant (
DESC
) en fonction du champ de date d’effet (Eff_Date
), de sorte que le salaire le plus récent s’affiche en premier dans chaque partition.Utilisez l’expression suivante dans le champ
Salary_Increase
pour calculer le changement de salaire entre chaque changement de date d’effet :[Salary] - (LEAD([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] DESC) )
Vous obtenez les résultats suivants :
row_ID | Employee_Name | Eff_Date | Salaire | Salary_Increase |
|---|---|---|---|---|
2 | Goh | 1/1/19 | 56000 | 7000 |
1 | Goh | 1/1/18 | 49000 | 5 000 |
3 | Goh | 1/1/17 | 44000 | 0 |
6 | Freeman | 1/1/19 | 69000 | 4 000 |
4 | Freeman | 1/1/18 | 65000 | 8000 |
5 | Freeman | 1/1/17 | 57000 | 0 |
8 | Smith | 1/1/19 | 56000 | 5 000 |
7 | Smith | 1/1/18 | 51000 | 7000 |
9 | Smith | 1/1/16 | 44000 | 0 |