PERCENT_RANK |
Rang de pourcentage |
| Oracle Database SQL |
Oracle Database 8i (8.1.6) ou supérieure |
Syntaxe
|
PERCENT_RANK(expr [, expr ]...) WITHIN GROUP
(ORDER BY
expr [ DESC | ASC ]
[NULLS { FIRST | LAST } ]
[, expr [ DESC | ASC ]
[NULLS { FIRST | LAST } ]
]...
)
|
|
PERCENT_RANK( )
OVER ([ query_partition_clause ] order_by_clause)
|
Paramètres
| Nom |
Description |
| expr |
Ce paramètre permet d'indiquer l'expression ou la colonne dont les valeurs seront utilisées pour calculer le rang relatif. |
| query_partition_clause |
Ce paramètre permet de diviser l'ensemble des données en partitions indépendantes pour calculer le rang relatif à l'intérieur de chaque partition. |
| order_by_clause |
Ce paramètre permet de spécifier l'ordre de classement des lignes dans le calcul du rang en pourcentage dans le cadre de l'utilisation avec OVER(). |
Description
Cette fonction permet de calculer le rang relatif d'une valeur dans un ensemble, exprimé en pourcentage entre 0 et 1. Elle est utile dans les analyses statistiques pour déterminer la position d'un enregistrement dans un groupe ordonné.
Remarques
- Calcul du rang relatif : La fonction PERCENT_RANK permet de déterminer la position relative d'une ligne par rapport aux autres dans un ensemble de données.
Elle renvoie une valeur comprise entre 0 et 1, ce qui facilite la comparaison entre ensembles de tailles différentes. Cette approche est utile pour obtenir un indicateur
de classement standardisé.
- Différence avec RANK : Contrairement à la fonction RANK, retournant un entier représentant le rang absolu d'une ligne, PERCENT_RANK exprime ce rang sous
forme normalisée en pourcentage. Cela permet une interprétation plus intuitive, surtout dans des contextes de statistiques ou d'évaluations de performance.
- Valeur minimale toujours 0 : Le résultat minimal de PERCENT_RANK est toujours 0, car la ligne en première position (selon le tri défini) obtient ce
score. Cela signifie que le classement en pourcentage commence toujours à zéro, même si l'ensemble comporte peu de lignes.
- Formule de calcul interne : En interne, PERCENT_RANK utilise la formule :
|
(rang-1)/(nombre_total_lignes-1)(rang-1)/(nombre_total_lignes-1)
|
Cela explique pourquoi la valeur maximale obtenue est 1 uniquement lorsque l'enregistrement se trouve à la dernière position dans le
groupe trié.
- Gestion des partitions : Lorsqu'elle est utilisée avec la clause PARTITION BY dans OVER(), la fonction calcule le rang relatif à l'intérieur
de chaque partition. Chaque groupe de données indépendant se voit ainsi attribuer ses propres pourcentages, ce qui est très pratique dans des analyses par segment ou
par catégorie.
- Sensibilité à l'ordre de tri : Le résultat dépend directement des expressions et de la direction (ASC ou DESC) définies dans la clause ORDER BY.
Un ordre inversé changera radicalement la répartition des pourcentages, ce qui doit être anticipé lors de l'analyse.
- Prise en compte des valeurs NULL : Grâce aux options NULLS FIRST ou NULLS LAST, on peut contrôler comment les valeurs nulles sont classées. Cela
influence directement la position des enregistrements et donc leur pourcentage de rang.
- Utilisation avec WITHIN GROUP : La syntaxe WITHIN GROUP permet d'appliquer PERCENT_RANK à des valeurs agrégées, ce qui est utile pour évaluer la
position relative d'une valeur spécifique dans un ensemble ordonné sans utiliser de fonctions analytiques classiques.
- Utilité en data science et BI : Cette fonction est couramment employée dans des contextes d'analyse de données, comme pour classer des clients
par volume d'achat ou évaluer des performances par rapport à un groupe de référence. Elle facilite la création de visualisations telles que des diagrammes de distribution
cumulative.
- Performance sur grands ensembles : Bien que performante, PERCENT_RANK implique un tri complet des données dans la partition ou l'ensemble. Sur de
très grands volumes, cela peut être coûteux en ressources, et il est conseillé d'optimiser les index ou de limiter la taille des partitions.
- Compatibilité historique : Introduite dès Oracle 8i (8.1.6), PERCENT_RANK est disponible dans toutes les versions modernes de la base de données.
Sa compatibilité étendue permet son intégration dans des systèmes anciens comme récents, ce qui facilite la portabilité du code SQL.
- Différence avec CUME_DIST : Bien qu'assez proche, PERCENT_RANK diffère de CUME_DIST. Cette dernière retourne la proportion de lignes ayant une
valeur inférieure ou égale, tandis que PERCENT_RANK se base sur le rang relatif calculé. Comprendre cette nuance est essentiel pour choisir la bonne fonction selon
l'objectif.
Dernière mise à jour : Dimanche, le 29 Juin 2025