PERCENTILE_DISC |
Centile disque |
| SQL Server |
Microsoft SQL Server |
Syntaxe
|
PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ partition_by_clause ] )
|
Paramètres
| Nom |
Description |
| numeric_literal |
Ce paramètre permet d'indiquer une valeur numérique comprise entre 0 et 1 (exclus). Elle représente le quantile à calculer. Par exemple, 0.5 correspond à la médiane. |
| WITHIN GROUP |
Ce paramètre permet d'indiquer une clause obligatoire précisant que le calcul s'effectue en fonction d'un ordre défini par l'expression ORDER BY. |
| ORDER BY order_by_expression |
Ce paramètre permet de définir la colonne ou expression sur laquelle les valeurs seront triées avant de déterminer le percentile. Le tri affecte directement le résultat. |
| OVER |
Ce paramètre permet de délimiter la fenêtre sur laquelle la fonction est appliquée. C'est une clause obligatoire même si elle est vide. |
| partition_by_clause |
Ce paramètre permet de diviser les données en groupes logiques (par exemple par département ou par région) avant d'appliquer le percentile dans chacun. |
Description
Cette fonction permet de calculer un centile spécifique pour les valeurs triées dans un ensemble de lignes entier ou dans les partitions distinctes d'un ensemble de lignes dans SQL Server.
Remarques
- Fonction orientée valeurs discrètes : PERCENTILE_DISC retourne la première valeur réelle présente dans l'ensemble trié correspondant au percentile
demandé. Cela signifie qu'elle ne calcule pas une valeur interpolée, mais renvoie une valeur existante dans la colonne triée, ce qui est particulièrement utile dans les
cas où seules les données réellement enregistrées doivent être prises en compte.
- Utilisation adaptée aux données catégoriques ou ordonnées : Cette fonction est idéale pour les colonnes catégoriques ordonnées, comme les notes ou les
pointages, car elle retourne une des valeurs présentes dans les données. Contrairement à PERCENTILE_CONT, elle ne tente pas de créer une moyenne entre deux valeurs
adjacentes, ce qui serait sans sens pour des données non continues.
- Nécessité du mot-clé WITHIN GROUP : PERCENTILE_DISC ne peut pas être utilisée sans la clause WITHIN GROUP, déterminant comment les lignes doivent être
triées pour évaluer le percentile. Cette clause est donc essentielle à la syntaxe, car le classement impacte directement le résultat retourné.
- Importance du tri (ORDER BY) : Le percentile est sensible à l'ordre des données. Par exemple, pour un percentile de 0.5 (la médiane), trier en ascendant
ou en descendant retourne des résultats différents. Il est donc crucial de bien réfléchir à la direction de tri selon le cas d'usage.
- Clause OVER obligatoire, même vide : La syntaxe exige la clause OVER, même si aucune partition n'est appliquée. Cette clause permet d'intégrer la fonction
dans une requête analytique et éventuellement de la combiner avec d'autres fonctions analytiques (comme RANK, ROW_NUMBER,...).
- Support des partitions logiques (PARTITION BY) : Grâce à la clause PARTITION BY, on peut calculer un percentile par groupe logique dans un ensemble
de données, comme par département, client, ou produit. Cela permet de produire des statistiques détaillées et segmentées sans requêtes imbriquées.
- Type de retour dépend de l'expression triée : Le type de valeur retourné par PERCENTILE_DISC est du même type que la colonne spécifiée dans l'ORDER BY.
Ainsi, si on ordonne sur une colonne de type VARCHAR, la fonction retourne une valeur texte, ce qui la rend souple et polyvalente selon le contexte.
- Performance et optimisation :s Bien que puissante, cette fonction peut devenir coûteuse en ressources sur de grandes tables, surtout avec des partitions
complexes ou des tris non indexés. Il est recommandé d'indexer les colonnes utilisées dans ORDER BY et PARTITION BY pour améliorer les performances d'exécution.
Dernière mise à jour : Mercredi, le 22 Septembre 2021