Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
PERCENTILE_ fonction DISC de fenêtre
PERCENTILE_ DISC est une fonction de distribution inverse qui suppose un modèle de distribution discret. Elle prend une valeur de centile et une spécification de tri et renvoie un élément de l’ensemble donné.
Pour une valeur percentile P donnée, PERCENTILE _ DISC trie les valeurs de l'expression dans la clause ORDER BY et renvoie la valeur dont la valeur de distribution cumulée la plus petite (par rapport à la même spécification de tri) est supérieure ou égale à P.
Vous ne pouvez spécifier que la PARTITION clause dans la OVER clause.
Syntaxe
PERCENTILE_DISC ( percentile ) WITHIN GROUP (ORDER BY expr) OVER ( [ PARTITION BY expr_list ] )
Arguments
- percentile
-
Constante numérique comprise entre 0 et 1. Les valeurs NULL sont ignorées dans le calcul.
- WITHINGROUP(ORDERPAR expr)
-
Spécifie les valeurs numériques ou de date/heure au-delà desquelles trier et calculer le centile.
- OVER
-
Spécifie le partitionnement de fenêtrage. La OVER clause ne peut pas contenir d'ordre de fenêtre ni de spécification de cadre de fenêtre.
- PARTITIONPAR expr
-
Argument facultatif qui définit la plage d'enregistrements pour chaque groupe de la OVER clause.
Renvoie
Le même type de données que l'expression ORDER BY de la WITHIN GROUP clause.
Exemples
Les exemples suivants utilisent le WINSALES tableau. Pour une description du WINSALES tableau, voirExemple de tableau contenant des exemples de fonctions de fenêtrage.
SELECT sellerid, qty, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY qty) OVER() AS MEDIAN FROM winsales;
+----------+-----+--------+ | sellerid | qty | median | +----------+-----+--------+ | 3 | 10 | 20 | | 1 | 10 | 20 | | 1 | 10 | 20 | | 4 | 10 | 20 | | 3 | 15 | 20 | | 2 | 20 | 20 | | 2 | 20 | 20 | | 3 | 20 | 20 | | 1 | 30 | 20 | | 3 | 30 | 20 | | 4 | 40 | 20 | +----------+-----+--------+
SELECT sellerid, qty, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY qty) OVER(PARTITION BY sellerid) AS MEDIAN FROM winsales;
+----------+-----+--------+ | sellerid | qty | median | +----------+-----+--------+ | 4 | 10 | 10 | | 4 | 40 | 10 | | 3 | 10 | 15 | | 3 | 15 | 15 | | 3 | 20 | 15 | | 3 | 30 | 15 | | 2 | 20 | 20 | | 2 | 20 | 20 | | 1 | 10 | 10 | | 1 | 10 | 10 | | 1 | 30 | 10 | +----------+-----+--------+
Pour trouver PERCENTILE _ DISC (0,25) et PERCENTILE _ DISC (0,75) pour la quantité divisée en fonction de l'identifiant du vendeur, utilisez les exemples suivants.
SELECT sellerid, qty, PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY qty) OVER(PARTITION BY sellerid) AS quartile1 FROM winsales;
+----------+-----+-----------+ | sellerid | qty | quartile1 | +----------+-----+-----------+ | 4 | 10 | 10 | | 4 | 40 | 10 | | 2 | 20 | 20 | | 2 | 20 | 20 | | 3 | 10 | 10 | | 3 | 15 | 10 | | 3 | 20 | 10 | | 3 | 30 | 10 | | 1 | 10 | 10 | | 1 | 10 | 10 | | 1 | 30 | 10 | +----------+-----+-----------+
SELECT sellerid, qty, PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY qty) OVER(PARTITION BY sellerid) AS quartile3 FROM winsales;
+----------+-----+-----------+ | sellerid | qty | quartile3 | +----------+-----+-----------+ | 3 | 10 | 20 | | 3 | 15 | 20 | | 3 | 20 | 20 | | 3 | 30 | 20 | | 4 | 10 | 40 | | 4 | 40 | 40 | | 2 | 20 | 20 | | 2 | 20 | 20 | | 1 | 10 | 30 | | 1 | 10 | 30 | | 1 | 30 | 30 | +----------+-----+-----------+