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.

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

A constant real value greater than or equal to 0.0 and less than 1.0. This indicates the percentile (from 0 to 99.999…). For example, the value 0.65 indicates the 65th percentile.

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.

  • 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);
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