Kategorien:

Aggregatfunktionen (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.

Siehe auch:

APPROX_PERCENTILE_ACCUMULATE, APPROX_PERCENTILE_COMBINE, APPROX_PERCENTILE_ESTIMATE

Syntax

Aggregatfunktion

APPROX_PERCENTILE( <expr> , <percentile> )
Copy

Fensterfunktionen

APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
Copy

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 als 1.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);
Copy

Ausführen von Abfragen und Anzeigen der Ausgabe:

SELECT APPROX_PERCENTILE(c1, 0.1) FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.1) |
|----------------------------|
|                        1.5 |
+----------------------------+
Copy
SELECT APPROX_PERCENTILE(c1, 0.5) FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.5) |
|----------------------------|
|                        5.5 |
+----------------------------+
Copy

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 |
+------------------------------+
Copy