PERCENT_RANK |
Rang de pourcentage |
|---|---|
| BigQuery | |
Syntaxe
| PERCENT_RANK() |
Description
Cette fonction permet de demander le rang en centile d'un enregistrement de la partition d'une requête.
Remarques
- Fonction de fenêtre sans paramètre : PERCENT_RANK() est une fonction analytique (ou fonction de fenêtre) ne prenant aucun paramètre. Elle doit obligatoirement être utilisée avec une clause OVER(...), souvent accompagnée d'un ORDER BY pour définir l'ordre des enregistrements dans une partition.
- Calcule la position relative d'un enregistrement : Cette fonction renvoie la position d'une ligne sous forme de pourcentage par rapport aux autres lignes dans la partition. Elle permet ainsi de savoir où se situe un enregistrement dans une distribution ordonnée.
- Résultat entre 0 et 1 inclus : La valeur retournée est toujours comprise entre 0 (première ligne) et 1 (dernière ligne). Les autres lignes auront des valeurs intermédiaires correspondant à leur position relative normalisée.
- Formule mathématique utilisée : Le calcul du rang est basé sur la formule :
- Différent de RANK() ou DENSE_RANK() : Contrairement aux fonctions RANK() ou DENSE_RANK() qui retournent un entier, PERCENT_RANK() retourne une valeur décimale, facilitant les comparaisons statistiques et les visualisations continues (exemple : graphiques de position).
- Utile pour la normalisation des données : Cette fonction est très utile pour normaliser des scores ou des valeurs, surtout dans les cas où on souhaite détecter des valeurs extrêmes ou segmenter les données en quantiles.
- Peut être combinée avec PARTITION BY : Lorsqu'on utilise PARTITION BY, PERCENT_RANK() est réinitialisé pour chaque sous-groupe. Cela permet d'avoir des pourcentages relatifs dans des groupes spécifiques (exemple : par département, pays, produit,...).
- Sensible à l'ordre spécifié dans OVER(ORDER BY ...) : Le comportement et les résultats dépendent fortement du critère d'ordre fourni dans la clause ORDER BY. Il est donc crucial de choisir une colonne pertinente pour garantir une distribution significative des pourcentages.
| (rang de la ligne - 1) / (nombre total de lignes - 1) |
Cela signifie que si la partition ne contient qu'une seule ligne, PERCENT_RANK() renvoie toujours 0, car le dénominateur devient zéro.
Dernière mise à jour : Jeudi, le 18 Juin 2020