MAX
Description
MAX
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 maximale (la plus élevée) du 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 (maximum pour cette fonction) dans chaque groupe.
Syntaxe
whereMAX(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 retour
La valeur de retour est du même type de champ que la valeur d'entrée.
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 un champ Devise.
- OVER()
- Est obligatoire.OVERdoit être utilisé dans un délai d'unMAXl'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. Toutefois, vous devez utiliser un type de champ numérique, tel qu'entier ou numérique lorsque vous utilisez laRANGEclause.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.
- LIGNES | GRANGE
- Est obligatoire. LaROWSetRANGELes clauses définissent le nombre précis de rangées (par rapport à la rangée actuelle) dans la partition en précisant un cadre de fenêtre. Vous définissez le cadre de la fenêtre en spécifiant des points de début et de fin à l’intérieur de la partition, appelés limites de la fenêtre. La structure de la fenêtre est l'ensemble de rangées d'entrée dans chaque partition sur laquelle calculer l'expression d'agrégation (maximum pour cette fonction). Le cadre de fenêtre peut inclure une, plusieurs rangées ou toutes les rangées de la partition.Les deuxROWSetRANGEindiquez la plage de rangées par rapport à la rangée actuelle, maisRANGEfonctionne de façon logique sur les valeurs (association logique) etROWSexerce son action physique sur des rangées dans le jeu de données (association physique).RANGElimite le cadre de la fenêtre pour qu’il contienne les rangées dont les valeurs sont comprises dans la plage précisée, par rapport à la valeur actuelle.ROWSlimite le cadre de la fenêtre pour qu'il contienne des rangées qui sont physiques à côté de la rangée actuelle.UtiliserRANGEpour définir des limites de fenêtre absolues, telles que les trois derniers mois ou le cumul de l’année. Lorsque vous utilisezRANGE, leORDER BYLa clause doit utiliser un type de champ numérique, tel que Entier ou Numérique.Exemple : vous avez un champ Nombre entier appelé MonthNum qui représente le numéro du mois de l’année (valeurs 1 à 12). Pour préciser toutes les valeurs des trois derniers mois, vous devez les classer 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 3 mois.Lorsque vous publiez un jeu de données qui contient une fonction de fenêtre à l'aide deRANGE, le nombre de rangées dans la fenêtre doit être inférieur ou égal à 1 000. Si une fenêtre particulière dépasse 1 000 rangées, la tâche de publication échoue.
- gains_boundary
- Est obligatoire. Les limites de la 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 définies en fonction de la ligne actuelle.APRECEDINGla clause définit une limite de fenêtre inférieure à la rangée actuelle (le nombre de rangées à inclure avant la rangée actuelle). LaFOLLOWINGLa clause définit une limite de fenêtre qui est supérieure à la rangée actuelle (le nombre de rangées à inclure après la rangée actuelle).Si vous indiquez une seule limite de fenêtre, Workday utilise la rangée actuelle comme autre limite dans le cadre de la fenêtre (la limite supérieure ou inférieure, selon la syntaxe de l’expression). LaUNBOUNDEDle mot-clé inclut toutes les rangées dans la direction indiquée. Lorsque vous devez indiquer à la fois une valeur de début et de fin de cadre de fenêtre, utilisez laBETWEENetANDmots clés.Lorsque vous précisez un nombre précis de rangées, lavaleurdoit être inférieure ou égale à 100.Exemple :ROWS 2 PRECEDINGsignifie que la fenêtre a une taille de trois rangées, en commençant par deux rangées précédant la rangée actuelle et y compris celle-ci.Exemple :ROWS UNBOUNDED FOLLOWINGsignifie que la fenêtre commence par la rangée actuelle et inclut la rangée actuelle et toutes les rangées qui suivent la rangée actuelle.
Exemples
Exemple : vous avez un jeu de données avec ces rangées et ces champs.
Supervisory Org | Trimestre | Nom | Changement de rémunération |
|---|---|---|---|
Marketing | 2019-Q1 | Goh | 2000.00 |
Marketing | 2019-Q1 | Freeman | 1000.00 |
Marketing | 2019-Q1 | Smith | 2500,00 |
Services-conseils | 2019-Q1 | Gomez | 5 000,00 |
Services-conseils | 2019-Q1 | Kimura | 3000.00 |
Services-conseils | 2019-Q1 | Fitz | 3500,00 |
Services-conseils | 2019-Q2 | Gomez | 0 |
Services-conseils | 2019-Q2 | Kimura | 2000.00 |
Services-conseils | 2019-Q2 | Fitz | 1500 |
Vous pouvez calculer le changement le plus élevé de la rémunération (champ
Changement de rémunération
) pour chaque organisation de supervision de chaque trimestre.Pour vous assurer que Workday retourne la même valeur pour chaque rangée d'une partition, classez les rangées dans l'ordre décroissant (
DESC
) en fonction du même champ que le champ d'entrée de sorte que le changement de rémunération le plus élevé s'affiche en premier dans chaque partition.Utilisez l’expression suivante dans le champ
Changement de rémunération maximum
:MAX([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
Vous obtenez les résultats suivants :
Supervisory Org | Trimestre | Nom | Changement de rémunération | Changement de rémunération maximum |
|---|---|---|---|---|
Services-conseils | 2019-Q1 | Gomez | 5 000,00 | 5 000,00 |
Services-conseils | 2019-Q1 | Fitz | 3500,00 | 5 000,00 |
Services-conseils | 2019-Q1 | Kimura | 3000.00 | 5 000,00 |
Services-conseils | 2019-Q2 | Kimura | 2000.00 | 2000.00 |
Services-conseils | 2019-Q2 | Fitz | 1500 | 2000.00 |
Services-conseils | 2019-Q2 | Gomez | 0 | 2000.00 |
Marketing | 2019-Q1 | Smith | 2500,00 | 2500,00 |
Marketing | 2019-Q1 | Goh | 2000.00 | 2500,00 |
Marketing | 2019-Q1 | Freeman | 1000.00 | 2500,00 |