Kategorien:

Aggregatfunktionen (Allgemein), Fensterfunktionen

PERCENTILE_CONT

Gibt einen Perzentilwert zurück, der auf einer kontinuierlichen Verteilung der Eingabespalte basiert (im Order-by-Ausdruck angegeben). Wenn keine Eingabezeile genau am gewünschten Perzentil liegt, wird das Ergebnis durch lineare Interpolation der zwei nächsten Eingabewerte berechnet. NULL-Werte werden bei der Berechnung ignoriert.

Siehe auch:

PERCENTILE_DISC

Syntax

Aggregatfunktion

PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>)

Fensterfunktionen

PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>) OVER ( [ PARTITION BY <expr3> ] )

Argumente

Perzentil

Das Perzentil des Wertes, den Sie suchen möchten. Das Perzentil muss eine Konstante zwischen 0,0 und 1,0 sein. Wenn Sie beispielsweise den Wert am 90. Perzentil ermitteln möchten, geben Sie 0,9 an.

Order-by-Ausdruck

Der Ausdruck (normalerweise ein Spaltenname), nach dem die Werte sortiert werden sollen. Wenn Sie beispielsweise nach dem Schüler suchen möchten, dessen SAT-Wert für Mathematik beim 90. Perzentil liegt, geben Sie die Spalte an, die diesen SAT-Wert enthält.

Beachten Sie, dass dies auch implizit die Spalte ist, aus der der zurückgegebene Wert ausgewählt wird. Wenn Sie beispielsweise nach den SAT-Werten in Mathematik sortieren, erhalten Sie einen der SAT-Werte für Mathematik. Sie können nicht nach einer Spalte sortieren und einen Perzentilwert für eine andere Spalte erhalten.

Ausdruck3

Dies ist der optionale Ausdruck zum Gruppieren von Zeilen in Partitionen.

Rückgabewerte

Gibt den Wert zurück, der sich am angegebenen Perzentil befindet. Wenn keine Eingabezeile genau am gewünschten Perzentil liegt, wird das Ergebnis durch lineare Interpolation der beiden nächstgelegenen Eingabewerte berechnet.

Bemerkung

Wenn eine Gruppe nur einen Wert enthält, wird dieser Wert für jedes angegebene Perzentil zurückgegeben (z. B. geben sowohl Perzentil 0,0 als auch Perzentil 1,0 diese eine Zeile zurück).

Nutzungshinweise

  • Das Perzentil-Argument für die Funktion muss eine Konstante sein.

  • DISTINCT wird bei dieser Funktion nicht unterstützt.

  • Die Funktion PERCENTILE_CONT interpoliert zwischen den beiden nächstgelegenen Werten, während die Funktion PERCENTILE_DISC keine Interpolation ausführt, sondern den nächstgelegenen Wert auswählt.

  • Bei Verwendung als Fensterfunktion:

    • Diese Funktion unterstützt nicht:

      • ORDER BY-Unterklausel in der OVER()-Klausel

      • Fensterrahmen

Beispiele

Im folgenden Beispiel werden die Werte gezeigt, die innerhalb verschiedener Gruppen am 25. Perzentil (0,25) liegen:

Erstellen Sie eine Tabelle, und füllen Sie diese mit Werten:

create or replace table aggr(k int, v decimal(10,2));
insert into aggr (k, v) values
    (0,  0),
    (0, 10),
    (0, 20),
    (0, 30),
    (0, 40),
    (1, 10),
    (1, 20),
    (2, 10),
    (2, 20),
    (2, 25),
    (2, 30),
    (3, 60),
    (4, NULL);

Führen Sie eine Abfrage aus, und zeigen Sie die Ausgabe an (beachten Sie, dass einige Werte genau sind und andere interpoliert werden):

select k, percentile_cont(0.25) within group (order by v) 
  from aggr 
  group by k
  order by k;
+---+-------------------------------------------------+
| K | PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY V) |
|---+-------------------------------------------------|
| 0 |                                        10.00000 |
| 1 |                                        12.50000 |
| 2 |                                        17.50000 |
| 3 |                                        60.00000 |
| 4 |                                            NULL |
+---+-------------------------------------------------+