Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
PERCENTILECONTFunktion _
PERCENTILE_ CONT ist eine umgekehrte Verteilungsfunktion, die von einem kontinuierlichen Verteilungsmodell ausgeht. Sie empfängt einen Perzentilwert und eine Sortierspezifikation und gibt einen interpolierten Wert zurück, der in Bezug auf die Sortierspezifikation in den angegebenen Perzentilwert fällt.
PERCENTILE_ CONT berechnet eine lineare Interpolation zwischen Werten, nachdem sie geordnet wurden. Mithilfe des Perzentilwerts (P)
und der Anzahl der Nicht-Null-Zeilen (N)
in der Aggregationsgruppe berechnet die Funktion die Anzahl der Zeilen, nachdem die Zeilen entsprechend der Sortierspezifikation angeordnet wurden. Die Anzahl von Zeilen (RN)
wird mit der Formel RN = (1+ (P*(N-1))
berechnet. Das Endergebnis der Aggregationsfunktion wird durch lineare Interpolierung zwischen den Werten aus Zeilen zwischen CRN = CEILING(RN)
und FRN = FLOOR(RN)
berechnet.
Das Ergebnis wird wie folgt aussehen.
Wenn (CRN = FRN = RN)
, ist das Ergebnis (value of expression from row at
RN)
Andernfalls sieht das Ergebnis wie folgt aus:
(CRN - RN) * (value of expression for row at FRN) + (RN - FRN) * (value of expression
for row at CRN)
.
PERCENTILE_ CONT ist eine reine Rechenknotenfunktion. Die Funktion gibt einen Fehler zurück, wenn die Abfrage nicht auf eine benutzerdefinierte Tabelle oder AWS Clean Rooms Systemtabelle verweist.
Syntax
PERCENTILE_CONT ( percentile ) WITHIN GROUP (ORDER BY expr)
Argumente
- percentile
-
Numerische Konstante zwischen 0 und 1. Null-Werte werden bei der Berechnung ignoriert.
- WITHINGROUP(ORDERVON expr)
-
Gibt numerische oder Datum-/Zeitwerte an, nach denen das Perzentil sortiert und berechnet werden soll.
Rückgabewert
Der Rückgabetyp wird durch den Datentyp des BY-Ausdrucks in der ORDER WITHIN GROUP Klausel bestimmt. Die folgende Tabelle zeigt den Rückgabetyp für jeden ORDER BY-Ausdrucks-Datentyp.
Input type | Rückgabetyp |
---|---|
SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL | DECIMAL |
FLOAT, DOUBLE | DOUBLE |
DATE | DATE |
TIMESTAMP | TIMESTAMP |
TIMESTAMPTZ | TIMESTAMPTZ |
Nutzungshinweise
Wenn der ORDER BY-Ausdruck ein DECIMAL Datentyp ist, der mit der maximalen Genauigkeit von 38 Ziffern definiert wurde, ist es möglich, CONT dass PERCENTILE _ entweder ein ungenaues Ergebnis oder einen Fehler zurückgibt. Wenn der Rückgabewert der CONT Funktion PERCENTILE _ 38 Ziffern überschreitet, wird das Ergebnis gekürzt, bis es passt, was zu einem Genauigkeitsverlust führt. Wenn während der Interpolierung ein Zwischenergebnis die maximal zulässige Genauigkeit überschreitet, erfolgt ein numerischer Überlauf und die Funktion gibt einen Fehler zurück. Um diese Bedingungen zu vermeiden, empfehlen wir, entweder einen Datentyp mit niedrigerer Genauigkeit zu verwenden oder den ORDER BY-Ausdruck auf eine niedrigere Genauigkeit umzuwandeln.
Wenn eine Anweisung mehrere Aufrufe von sortierbasierten Aggregatfunktionen (LISTAGG, PERCENTILE _ CONT oderMEDIAN) enthält, müssen sie alle dieselben ORDER BY-Werte verwenden. Beachten Sie, dass auf den Ausdruckswert eine implizite Reihenfolge nach MEDIAN angewendet wird.
Die folgende Anweisung gibt beispielsweise einen Fehler zurück.
select top 10 salesid, sum(pricepaid), percentile_cont(0.6) within group (order by salesid), median (pricepaid) from sales group by salesid, pricepaid; An error occurred when executing the SQL command: select top 10 salesid, sum(pricepaid), percentile_cont(0.6) within group (order by salesid), median (pricepaid) from sales group by salesid, pricepai... ERROR: within group ORDER BY clauses for aggregate functions must be the same
Die folgende Anweisung wird erfolgreich ausgeführt.
select top 10 salesid, sum(pricepaid), percentile_cont(0.6) within group (order by salesid), median (salesid) from sales group by salesid, pricepaid;
Beispiele
Das folgende Beispiel zeigt, dass dies MEDIAN zu den gleichen Ergebnissen führt wie PERCENTILE _ CONT (0.5).
select top 10 distinct sellerid, qtysold, percentile_cont(0.5) within group (order by qtysold), median (qtysold) from sales group by sellerid, qtysold; sellerid | qtysold | percentile_cont | median ---------+---------+-----------------+------- 1 | 1 | 1.0 | 1.0 2 | 3 | 3.0 | 3.0 5 | 2 | 2.0 | 2.0 9 | 4 | 4.0 | 4.0 12 | 1 | 1.0 | 1.0 16 | 1 | 1.0 | 1.0 19 | 2 | 2.0 | 2.0 19 | 3 | 3.0 | 3.0 22 | 2 | 2.0 | 2.0 25 | 2 | 2.0 | 2.0