Die Funktion APPROXIMATE PERCENTILE_DISC - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Die Funktion APPROXIMATE PERCENTILE_DISC

APPROXIMATE PERCENTILE_DISC ist eine Funktion für die inverse Verteilung, die ein diskretes Verteilungsmodell annimmt. Sie empfängt einen Perzentilwert und eine Sortierspezifikation und gibt ein Element aus dem angegebenen Satz zurück. Die Annäherung ermöglicht eine sehr viel schnellere Ausführung der Funktion bei einer niedrigen relativen Fehlerquote von ungefähr 0,5 Prozent.

APPROXIMATE PERCENTILE_DISC verwendet für einen bestimmten Perzentilwert einen zusammenfassenden Quantil-Algorithmus, um das diskrete Perzentil des Ausdrucks in der ORDER BY-Klausel anzunähern. APPROXIMATE PERCENTILE_DISC gibt den Wert mit dem kleinsten kumulativen Verteilungswert (in Bezug auf dieselbe Sortierspezifikation) zurück, der größer als oder gleich Perzentil ist.

Syntax

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

Argumente

percentile

Numerische Konstante zwischen 0 und 1. Null-Werte werden bei der Berechnung ignoriert.

WITHIN GROUP ( ORDER BY expr)

Klausel, die numerische oder Datum-/Zeitwerte angibt, um das Perzentil zu sortieren und zu verarbeiten.

Rückgabewert

Derselbe Datentyp wie der ORDER BY-Ausdruck in der WITHIN GROUP-Klausel.

Nutzungshinweise

Wenn die Anweisung APPROXIMATE PERCENTILE_DISC eine GROUP BY-Klausel enthält, ist der Ergebnissatz begrenzt. Das Limit ist vom Knotentyp und der Anzahl der Knoten abhängig. Wenn das Limit überschritten wird, schlägt die Funktion fehl und gibt den folgenden Fehler zurück.

GROUP BY limit for approximate percentile_disc exceeded.

Wenn Sie mehr Gruppen auswerten müssen, als das Limit zulässt, sollten Sie die Verwendung von in Betracht ziehen Die Funktion PERCENTILE_CONT.

Beispiele

Im folgenden Beispiel werden die Anzahl der Verkäufe, der Gesamtumsatz und der fünfzigste Perzentilwert für die 10 Topdaten zurückgegeben.

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