Fonction de fenêtrage PERCENTILE_DISC - Amazon Redshift

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.

Fonction de fenêtrage PERCENTILE_DISC

La fonction PERCENTILE_DISC est une fonction de distribution inverse qui suppose un modèle de distribution discrète. Elle prend une valeur de centile et une spécification de tri et renvoie un élément de l’ensemble donné.

Pour une valeur de centile donnée P, PERCENTILE_DISC trie les valeurs de l’expression dans la clause ORDER BY et renvoie la valeur avec la valeur de distribution cumulée la plus petite (concernant la même spécification de tri) supérieure ou égale à P.

Vous pouvez uniquement spécifier la clause PARTITION dans la clause OVER.

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.

WITHIN GROUP ( ORDER BY 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 clause OVER ne peut pas contenir d’ordre de fenêtrage ou de spécification de cadre de fenêtrage.

PARTITION BY expr

Argument facultatif qui définit la plage d’enregistrements de chaque groupe de la clause OVER.

Renvoie

Type de données identique à l’expression ORDER BY dans la clause WITHIN GROUP.

Exemples

Les exemples suivants utilisent la table WINSALES. Pour obtenir une description de la table WINSALES, consultez Exemple 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 rechercher PERCENTILE_DISC(0.25) et PERCENTILE_DISC(0.75) pour la quantité lorsqu’elle est partitionnée par ID de 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 | +----------+-----+-----------+