- Kategorien:
Aggregationsfunktionen (Perzentilschätzung), 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¶
expr
Ein gültiger Ausdruck, z. B. ein Spaltenname, der einen numerischen Wert ergibt.
percentile
Ein konstanter tatsächlicher Wert, der größer gleich
0.0
und kleiner als1.0
ist. Dies gibt das Perzentil an (von 0 bis 99,999…). Beispiel: Der Wert 0,65 gibt das 65. Perzentil an.expr3
Dies 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
expr
Werte 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.
Bei Verwendung als Fensterfunktion:
Diese Funktion unterstützt nicht:
ORDER BY-Unterklausel in der OVER()-Klausel
Fensterrahmen
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 | +------------------------------+