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 nutzt den 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> )

Fensterfunktionen

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

Argumente

Ausdruck

Ein gültiger Ausdruck, z. B. ein Spaltenname, der einen numerischen Wert ergibt.

Perzentil

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.

Ausdruck3

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 Ausdruck Werte erzeugen, die Zahlen sind oder in Zahlen umgewandelt werden können.

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