Fonction APPROXIMATE 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 APPROXIMATE PERCENTILE_DISC

APPROXIMATE 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é. L’approximation permet une exécution de la fonction nettement plus rapide, avec une erreur relative faible d’environ 0,5 %.

Pour une valeur de percentile donnée, APPROXIMATE PERCENTILE_DISC utilise un algorithme résumé de quantile afin d’évaluer de façon approximative le percentile discret de l’expression dans la clause ORDER BY. APPROXIMATE PERCENTILE_DISC renvoie la valeur ayant la valeur de distribution cumulative la moins élevée (par rapport à la même spécification de tri) supérieure ou égale au percentile.

Syntaxe

APPROXIMATE PERCENTILE_DISC ( percentile ) WITHIN GROUP (ORDER BY expr)

Arguments

percentile

Constante numérique comprise entre 0 et 1. Les valeurs NULL sont ignorées dans le calcul.

WITHIN GROUP ( ORDER BY expr)

Clause qui spécifie les valeurs numériques ou de date/heure au-delà desquelles le centile sera trié et calculé.

Renvoie

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

Notes d’utilisation

Si l’instruction APPROXIMATE PERCENTILE_DISC inclut une clause GROUP BY, le jeu de résultats est limité. La limite varie en fonction du type de nœud et du nombre de nœuds. Si la limite est dépassée, la fonction échoue et renvoie l’erreur suivante.

GROUP BY limit for approximate percentile_disc exceeded.

Si vous devez évaluer plus de groupes que ne le permet la limite, pensez à utiliser Fonction PERCENTILE_CONT.

Exemples

L’exemple suivant renvoie le nombre de ventes, le total des ventes et la valeur du 50e percentile pour les 10 meilleures dates.

select top 10 date.caldate, count(totalprice), sum(totalprice), approximate percentile_disc(0.5) within group (order by totalprice) from listing join date on listing.dateid = date.dateid group by date.caldate order by 3 desc; caldate | count | sum | percentile_disc -----------+-------+------------+---------------- 2008-01-07 | 658 | 2081400.00 | 2020.00 2008-01-02 | 614 | 2064840.00 | 2178.00 2008-07-22 | 593 | 1994256.00 | 2214.00 2008-01-26 | 595 | 1993188.00 | 2272.00 2008-02-24 | 655 | 1975345.00 | 2070.00 2008-02-04 | 616 | 1972491.00 | 1995.00 2008-02-14 | 628 | 1971759.00 | 2184.00 2008-09-01 | 600 | 1944976.00 | 2100.00 2008-07-29 | 597 | 1944488.00 | 2106.00 2008-07-23 | 592 | 1943265.00 | 1974.00