- Kategorien:
Aggregatfunktionen (Percentile Estimation) , Fensterfunktionen
APPROX_PERCENTILE¶
Gibt einen Näherungswert für das gewünschte Perzentil zurück (d. h. wenn die c-Spalte n Zahlen hat, gibt APPROX_PERCENTILE(c, p) eine Zahl zurück, sodass ungefähr n * p der Zahlen in c kleiner als die zurückgegebene Zahl sind).
Diese Funktion verwendet eine verbesserte Version des t-Digest-Algorithmus. Weitere Informationen dazu finden Sie unter Schätzen von Perzentilwerten.
Syntax¶
Aggregatfunktion
APPROX_PERCENTILE( <expr> , <percentile> )
Fensterfunktionen
APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
Argumente¶
exprEin gültiger Ausdruck, z. B. ein Spaltenname, der einen numerischen Wert ergibt.
percentileA constant real value greater than or equal to
0.0and less than1.0. This indicates the percentile (from 0 to 99.999…). For example, the value 0.65 indicates the 65th percentile.expr3Dies ist der optionale Ausdruck zum Gruppieren von Zeilen in Partitionen.
Rückgabewerte¶
Die Ausgabe wird als DOUBLE-Wert zurückgegeben.
Nutzungshinweise¶
Perzentile funktionieren nur bei numerischen Werten. Daher muss
exprWerte erzeugen, die Zahlen sind oder sich in Zahlen umwandeln lassen.Die zurückgegebenen Werte sind nicht unbedingt im Dataset enthalten.
Der zurückgegebene Wert ist eine Approximation. Die Größe des Datasets und die Datenschiefe im Dataset beeinflussen die Genauigkeit der Approximation.
Wenn diese Funktion als Fensterfunktion aufgerufen wird, wird sie nicht unterstützt:
Eine ORDER BY-Klausel innerhalb der OVER-Klausel.
Explizite Fensterrahmen.
Decimal-float (DECFLOAT) values aren’t supported.
Beispiele¶
Verwendungsbeispiel für die Funktion APPROX_PERCENTILE:
Erstellen Sie eine Tabelle, und füllen Sie diese mit Werten:
CREATE TABLE testtable (c1 INTEGER); INSERT INTO testtable (c1) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Ausführen von Abfragen und Anzeigen der Ausgabe:
SELECT APPROX_PERCENTILE(c1, 0.1) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.1) | |----------------------------| | 1.5 | +----------------------------+SELECT APPROX_PERCENTILE(c1, 0.5) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.5) | |----------------------------| | 5.5 | +----------------------------+
Beachten Sie, dass der in diesem Fall zurückgegebene Wert höher ist als der tatsächliche Wert im Dataset:
SELECT APPROX_PERCENTILE(c1, 0.999) FROM testtable; +------------------------------+ | APPROX_PERCENTILE(C1, 0.999) | |------------------------------| | 10.5 | +------------------------------+