CUME_DIST |
Distribution cumulative |
|---|---|
| Oracle Database SQL | Oracle 12c Release 2 (12.2) ou supérieure |
Syntaxe
| cume_dist(expression1,...,expressionN) |
Paramètres
| Nom | Description |
|---|---|
| expression1 | Ce paramètre permet d'indiquer la première expression correspondant au nombre à traiter |
| ...,expressionN | Ces paramètres permettent d'indiquer les autres expressions correspondant au nombre à traiter |
Description
Cette fonction retourne la distribution cumulative d'une valeur contenue dans un groupe de valeurs.
Remarques
- Fonction analytique par nature : La fonction CUME_DIST est une fonction analytique, ce qui signifie qu'elle opère sur un ensemble de lignes (ou fenêtre) plutôt que sur une seule ligne. Elle est souvent utilisée avec des clauses OVER(PARTITION BY ... ORDER BY ...) pour effectuer des calculs par groupes logiques.
- Distribution cumulative normalisée : Cette fonction retourne un nombre compris entre 0 et 1 qui représente la proportion des valeurs inférieures ou égales à la valeur courante dans le groupe. Cela permet de mesurer la position relative d'un élément.
- Idéale pour le classement relatif : CUME_DIST est très utile pour effectuer des classements statistiques relatifs, en particulier lorsqu'on veut détecter les seuils de performance (exemple : top 10 %, quartiles,...).
- Ne nécessite pas obligatoirement d'expression : Contrairement à ce que la syntaxe suggère, la fonction n'utilise pas directement des expressions dans les parenthèses. Elle dépend essentiellement des clauses ORDER BY dans la clause OVER. Les expressions dans la syntaxe sont parfois considérées comme redondantes.
- Sensible à l'ordre de tri : Le résultat de CUME_DIST est fortement influencé par la clause ORDER BY dans la clause analytique. Un ordre différent modifiera la distribution calculée, car elle se base sur le rang cumulé dans cet ordre.
- Gestion des ex aequo : Lorsque plusieurs lignes ont des valeurs égales (ex aequo), CUME_DIST attribue à chacune la même valeur de distribution cumulative, ce qui reflète le comportement attendu d'une fonction de type "ranking".
- Compatible avec PARTITION BY : La fonction prend tout son sens lorsqu'elle est utilisée avec PARTITION BY, ce qui permet de calculer des distributions cumulées séparément pour chaque groupe logique (exemple : département, région,...).
- Différente de PERCENT_RANK : Bien que similaire à PERCENT_RANK, CUME_DIST calcule la proportion cumulative jusqu'à la ligne actuelle, tandis que PERCENT_RANK mesure la proportion de lignes précédant la ligne courante.
- Utilisable dans des requêtes décisionnelles : Elle est souvent utilisée dans des tableaux de bord, requêtes BI ou rapports de performance, pour mettre en évidence les entités dans les seuils supérieurs ou inférieurs d'une population.
- Peut être utilisée dans des clauses SELECT, ORDER BY ou HAVING : On peut insérer CUME_DIST() directement dans un SELECT pour l'afficher, ou dans un HAVING ou un sous-ensemble pour filtrer les éléments supérieurs à un seuil cumulé donné (exemple : > 0.95).
- Précision des valeurs flottantes : Le résultat est retourné sous forme de valeur décimale double précision, ce qui assure une bonne précision pour des comparaisons dans des intervalles très fins, mais peut demander des arrondis dans certains affichages.
- Prise en charge dès Oracle 12.2 : La fonction CUME_DIST est pleinement supportée depuis Oracle 12c Release 2 (12.2), bien qu'elle existait déjà dans les versions antérieures dans un usage analytique. Son usage s'est cependant largement démocratisé avec les requêtes OLAP modernes.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015