Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

PERCENTILE_ CONT Fenster-Funktion - Amazon Redshift

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.

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.

PERCENTILE_ CONT Fenster-Funktion

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).

Sie können nur die PARTITION Klausel in der Klausel angeben. OVER Falls PARTITION angegeben, CONT gibt PERCENTILE _ für jede Zeile den Wert zurück, der in das angegebene Perzentil innerhalb einer Gruppe von Werten innerhalb einer bestimmten Partition fallen würde.

Syntax

PERCENTILE_CONT ( percentile ) WITHIN GROUP (ORDER BY expr) OVER ( [ PARTITION BY expr_list ] )

Argumente

percentile

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

WITHINGROUP(VON expr) ORDER

Gibt numerische oder Datum-/Zeitwerte an, nach denen das Perzentil sortiert und berechnet werden soll.

OVER

Gibt die Fensterpartitionierung an. Die OVER Klausel darf keine Fensterreihenfolge oder Fensterrahmenspezifikation enthalten.

PARTITIONVON expr

Optionales Argument, das den Datensatzbereich für jede Gruppe in der OVER Klausel festlegt.

Rückgabewert

Der Rückgabetyp wird durch den Datentyp des ORDER BY-Ausdrucks in der WITHIN GROUP Klausel bestimmt. Die folgende Tabelle zeigt den Rückgabetyp für jeden ORDER BY-Ausdrucks-Datentyp.

Typ der Eingabe Typ der Rückgabe
INT2, INT4, INT8, NUMERIC, DECIMAL DECIMAL
FLOAT, DOUBLE DOUBLE
DATE DATE
TIMESTAMP TIMESTAMP

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.

Beispielsweise gibt eine SUM Funktion mit einem DECIMAL Argument eine Standardgenauigkeit von 38 Ziffern zurück. Die Ergebnisskala ist die gleiche wie die Skala des Arguments. So gibt beispielsweise die Angabe SUM einer Spalte DECIMAL (5,2) den Datentyp DECIMAL (38,2) zurück.

Im folgenden Beispiel wird eine SUM Funktion in der ORDER BY-Klausel einer PERCENTILE CONT _-Funktion verwendet. Der Datentyp der PRICEPAID Spalte ist DECIMAL (8,2), daher gibt die SUM Funktion DECIMAL (38,2) zurück.

select salesid, sum(pricepaid), percentile_cont(0.6) within group (order by sum(pricepaid) desc) over() from sales where salesid < 10 group by salesid;

Um einen möglichen Genauigkeitsverlust oder einen Überlauffehler zu vermeiden, wandeln Sie das Ergebnis in einen DECIMAL Datentyp mit niedrigerer Genauigkeit um, wie das folgende Beispiel zeigt.

select salesid, sum(pricepaid), percentile_cont(0.6) within group (order by sum(pricepaid)::decimal(30,2) desc) over() from sales where salesid < 10 group by salesid;

Beispiele

In den folgenden Beispielen wird die WINSALES Tabelle verwendet. Eine Beschreibung der WINSALES Tabelle finden Sie unterBeispieltabelle mit Beispielen von Fensterfunktionen.

select sellerid, qty, percentile_cont(0.5) within group (order by qty) over() as median from winsales; sellerid | qty | median ----------+-----+-------- 1 | 10 | 20.0 1 | 10 | 20.0 3 | 10 | 20.0 4 | 10 | 20.0 3 | 15 | 20.0 2 | 20 | 20.0 3 | 20 | 20.0 2 | 20 | 20.0 3 | 30 | 20.0 1 | 30 | 20.0 4 | 40 | 20.0 (11 rows)
select sellerid, qty, percentile_cont(0.5) within group (order by qty) over(partition by sellerid) as median from winsales; sellerid | qty | median ----------+-----+-------- 2 | 20 | 20.0 2 | 20 | 20.0 4 | 10 | 25.0 4 | 40 | 25.0 1 | 10 | 10.0 1 | 10 | 10.0 1 | 30 | 10.0 3 | 10 | 17.5 3 | 15 | 17.5 3 | 20 | 17.5 3 | 30 | 17.5 (11 rows)

Im folgenden Beispiel werden PERCENTILE _ CONT und PERCENTILE _ DISC der Ticketverkäufe für Verkäufer im Bundesstaat Washington berechnet.

SELECT sellerid, state, sum(qtysold*pricepaid) sales, percentile_cont(0.6) within group (order by sum(qtysold*pricepaid::decimal(14,2) ) desc) over(), percentile_disc(0.6) within group (order by sum(qtysold*pricepaid::decimal(14,2) ) desc) over() from sales s, users u where s.sellerid = u.userid and state = 'WA' and sellerid < 1000 group by sellerid, state; sellerid | state | sales | percentile_cont | percentile_disc ----------+-------+---------+-----------------+----------------- 127 | WA | 6076.00 | 2044.20 | 1531.00 787 | WA | 6035.00 | 2044.20 | 1531.00 381 | WA | 5881.00 | 2044.20 | 1531.00 777 | WA | 2814.00 | 2044.20 | 1531.00 33 | WA | 1531.00 | 2044.20 | 1531.00 800 | WA | 1476.00 | 2044.20 | 1531.00 1 | WA | 1177.00 | 2044.20 | 1531.00 (7 rows)
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.