RANK
Description
RANK
est une fonction d'agrégation de fenêtre utilisée pour affecter un numéro de classement à chaque ligne d'un groupe. Si plusieurs lignes ont la même valeur de classement (il existe une égalité), Workday affecte la même valeur de classement aux lignes liées et ignore la position de classement suivante.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, trie les lignes en fonction des champs de tri, puis calcule l'expression d'agrégation (classification pour cette fonction) dans chaque groupe. Les lignes classées dans chaque groupe commencent à 1.
Syntaxe
RANK()OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Valeur de renvoi
Renvoie une valeur de type
Integer
.Paramètres d'entrée
- OVER()
- Obligatoire.OVERdoit être utilisé dans un calendrierRANKexpression.
- 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 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.
Exemples
Exemple : vous disposez d'un jeu de données avec les lignes et les champs suivants.
Salarié | Date de vente | Ventes |
|---|---|---|
Goh | 12/31/2018 | 140 |
Goh | 11/30/2018 | 60 |
Goh | 10/31/2018 | 140 |
Freeman | 12/31/2018 | 160 |
Freeman | 11/30/2018 | 60 |
Freeman | 10/31/2018 | 110 |
Smith | 12/31/2018 | 140 |
Smith | 11/30/2018 | 60 |
Smith | 10/31/2018 | 120 |
Vous pouvez classer les ventes de chaque employé dans l'ordre décroissant, de sorte que les ventes les plus élevées reçoivent un classement de 1. Utilisez l'expression suivante dans le champ
Classer les ventes par salarié
:RANK() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
Vous obtenez les résultats suivants :
Salarié | Date de vente | Ventes | Classer les ventes par salarié |
|---|---|---|---|
Goh | 12/31/2018 | 140 | 1 |
Goh | 10/31/2018 | 140 | 1 |
Goh | 11/30/2018 | 60 | 3 |
Freeman | 12/31/2018 | 160 | 1 |
Freeman | 10/31/2018 | 110 | 2 |
Freeman | 11/30/2018 | 60 | 3 |
Smith | 12/31/2018 | 140 | 1 |
Smith | 10/31/2018 | 120 | 2 |
Smith | 11/30/2018 | 60 | 3 |
Vous pouvez également classer les ventes pour chaque date par ordre décroissant, de sorte que les ventes les plus élevées reçoivent un classement de 1. Utilisez l'expression suivante dans le champ
Classer les ventes par date
:RANK() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
Vous obtenez les résultats suivants :
Salarié | Date de vente | Ventes | Classer les ventes par date |
|---|---|---|---|
Freeman | 12/31/2018 | 160 | 1 |
Goh | 12/31/2018 | 140 | 2 |
Smith | 12/31/2018 | 140 | 2 |
Goh | 11/30/2018 | 60 | 1 |
Freeman | 11/30/2018 | 60 | 1 |
Smith | 11/30/2018 | 60 | 1 |
Goh | 10/31/2018 | 140 | 1 |
Smith | 10/31/2018 | 120 | 2 |
Freeman | 10/31/2018 | 110 | 3 |
Notez que les valeurs liées reçoivent le même numéro de rang et que la position de rang suivante est ignorée.