

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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 Funktion PERCENTILE\_CONT
<a name="r_PERCENTILE_CONT"></a>

PERCENTILE\_CONT ist eine Funktion für die inverse Verteilung, die ein kontinuierliches Verteilungsmodell annimmt. 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 Interpolierung zwischen Werten, nachdem diese der Reihenfolge entsprechend angeordnet 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)`.

## Syntax
<a name="r_PERCENTILE_CONT-synopsis"></a>

```
PERCENTILE_CONT(percentile)
WITHIN GROUP(ORDER BY expr)
```

## Argumente
<a name="r_PERCENTILE_CONT-arguments"></a>

 *percentile*   
Numerische Konstante zwischen 0 und 1. `NULL`-Werte werden bei der Berechnung ignoriert.

*expr*  
Gibt numerische date/time Werte oder Werte an, nach denen das Perzentil sortiert und berechnet werden soll. 

## Rückgabewert
<a name="r_PERCENTILE_CONT-returns"></a>

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


| Input type | Rückgabetyp | 
| --- | --- | 
| INT2, INT4, INT8, NUMERIC, DECIMAL | DECIMAL | 
| FLOAT, DOUBLE | DOUBLE | 
| DATE | DATE | 
| TIMESTAMP | TIMESTAMP | 
| TIMESTAMPTZ | TIMESTAMPTZ | 

## Nutzungshinweise
<a name="r_PERCENTILE_CONT-usage-notes"></a>

Wenn das Argument ORDER BY den Datentyp DECIMAL hat und mit der maximal zulässigen Präzision von 38 Stellen definiert ist, gibt PERCENTILE\_CONT möglicherweise ein falsches Ergebnis oder einen Fehler zurück. Wenn der Rückgabewert der Funktion PERCENTILE\_CONT 38 Stellen überschreitet, wird das Ergebnis entsprechend abgekürzt. Dies führt zu einem Genauigkeitsverlust. 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, werden die Verwendung eines Datentyps mit einer niedrigeren Genauigkeit oder die Umwandlung des Ausdrucks ORDER BY in einen Ausdruck mit niedrigerer Genauigkeit empfohlen.

Wenn eine Anweisung mehrere Aufrufe von sortierbasierten Aggregationsfunktionen enthält (LISTAGG, PERCENTILE\_CONT oder MEDIAN), müssen alle dieselben ORDER BY-Werte verwenden. Beachten Sie, dass MEDIAN implizit eine Reihenfolge nach dem Wert des Ausdrucks anwendet. 

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, pricepaid;

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
<a name="r_PERCENTILE_CONT-examples"></a>

In den folgenden Beispielen werden Daten aus der TICKIT-Beispieldatenbank verwendet. Weitere Informationen finden Sie unter [Beispieldatenbank](c_sampledb.md).

Das folgende Beispiel zeigt, dass PERCENTILE\_CONT(0.5) dieselben Ergebnisse wie MEDIAN produziert. 

```
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 |
+----------+---------+-----------------+--------+
|        2 |       2 |               2 |      2 |
|       26 |       1 |               1 |      1 |
|       33 |       1 |               1 |      1 |
|       38 |       1 |               1 |      1 |
|       43 |       1 |               1 |      1 |
|       48 |       2 |               2 |      2 |
|       48 |       3 |               3 |      3 |
|       77 |       4 |               4 |      4 |
|       85 |       4 |               4 |      4 |
|       95 |       2 |               2 |      2 |
+----------+---------+-----------------+--------+
```

Im folgenden Beispiel werden PERCENTILE\_CONT (0.5) und PERCENTILE\_CONT (0.75) für die Verkaufsmenge für jede sellerid in der Tabelle SALES ermittelt.

```
SELECT sellerid, 
PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY qtysold) as pct_50,
PERCENTILE_CONT(0.75) WITHIN GROUP(ORDER BY qtysold) as pct_75
FROM sales
GROUP BY sellerid
ORDER BY sellerid
LIMIT 10;

+----------+--------+---------+
| sellerid | pct_50 | pct_75 |
+----------+--------+---------+
|        1 |    1.5 |    1.75 |
|        2 |      2 |    2.25 |
|        3 |      2 |       3 |
|        4 |      2 |       2 |
|        5 |      1 |     1.5 |
|        6 |      1 |       1 |
|        7 |    1.5 |    1.75 |
|        8 |      1 |       1 |
|        9 |      4 |       4 |
|       12 |      2 |    3.25 |
+----------+--------+---------+
```

Verwenden Sie das folgende Beispiel, um die Ergebnisse der vorherigen Abfrage für die erste sellerid zu überprüfen.

```
SELECT qtysold 
FROM sales 
WHERE sellerid=1;

+---------+
| qtysold |
+---------+
|       2 |
|       1 |
+---------+
```