Kategorien:

Aggregatfunktionen (General) , Fensterfunktionen

MEDIAN

Bestimmt den Mittelwert eines Wertesatzes.

Syntax

Aggregatfunktion

MEDIAN( <expr> )

Fensterfunktionen

MEDIAN( <expr> ) OVER ( [ PARTITION BY <expr2> ] )

Argument

expr

The expression must evaluate to a numeric data type (INTEGER, FLOAT, DECIMAL, or equivalent).

Rückgabewerte

Returns a FLOAT or DECIMAL (fixed-point) number, depending upon the input.

Nutzungshinweise

  • Wenn die Anzahl der Nicht-NULL-Werte eine ungerade Zahl größer oder gleich 1 ist, wird der Medianwert („Mitte“) der Nicht-NULL-Werte zurückgegeben.

  • Wenn die Anzahl der Nicht-NULL-Werte eine gerade Zahl ist, wird ein Wert zurückgegeben, der dem Durchschnitt der beiden mittleren Werte entspricht. Wenn die Werte beispielsweise 1, 3, 5 und 20 sind, wird 4 zurückgegeben (der Durchschnitt von 3 und 5).

  • Wenn alle Werte NULL sind, wird NULL zurückgegeben.

  • Wenn die Anzahl der Nicht-NULL-Werte 0 ist, wird NULL zurückgegeben.

  • DISTINCT wird bei dieser Funktion nicht unterstützt.

  • Wenn diese Funktion als Fensterfunktion aufgerufen wird, wird sie nicht unterstützt:

    • Eine ORDER BY-Klausel innerhalb der OVER-Klausel.

    • Explizite Fensterrahmen.

Beispiele

Hier wird die Verwendung dieser Funktion gezeigt.

Erstellen Sie eine leere Tabelle.

CREATE OR REPLACE TABLE aggr (k INT, v DECIMAL(10,2));

Get the MEDIAN value for column v. The function returns NULL because there are no rows.

SELECT MEDIAN(v)
  FROM aggr;
+------------+
| MEDIAN (V) |
|------------|
|       NULL |
+------------+

Fügen Sie einige Zeilen ein:

INSERT INTO aggr VALUES (1, 10), (1, 20), (1, 21);
INSERT INTO aggr VALUES (2, 10), (2, 20), (2, 25), (2, 30);
INSERT INTO aggr VALUES (3, NULL);

Get the MEDIAN value for each group. Note that because the number of values in group k = 2 is an even number, the returned value for that group is the mid-point between the two middle numbers.

SELECT k, MEDIAN(v)
  FROM aggr
  GROUP BY k
  ORDER BY k;
+---+-----------+
| K | MEDIAN(V) |
|---+-----------|
| 1 |  20.00000 |
| 2 |  22.50000 |
| 3 |      NULL |
+---+-----------+