Kategorien:

Aggregatfunktionen (Allgemein), Fensterfunktionen

MEDIAN

Bestimmt den Mittelwert eines Wertesatzes.

Syntax

Aggregatfunktion

MEDIAN( <expr> )
Copy

Fensterfunktionen

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

Argument

expr

Der Ausdruck muss einen numerischen Datentyp (INTEGER, FLOAT, DECIMAL oder einen äquivalenten Wert) ergeben.

Rückgabewerte

Gibt abhängig von der Eingabe eine Zahl vom Typ FLOAT (Gleitkomma) oder DECIMAL (Festkomma) zurück.

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.

  • Bei Verwendung als Fensterfunktion:

    • Diese Funktion unterstützt nicht:

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

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

Rufen Sie den Wert MEDIAN für Spalte „v“ ab. Die Funktion gibt NULL zurück, da keine Zeilen vorhanden sind.

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

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

Rufen Sie den MEDIAN-Wert für jede Gruppe ab. Da die Anzahl der Werte in Gruppe k = 2 eine gerade Zahl ist, ist der zurückgegebene Wert für diese Gruppe der Mittelpunkt zwischen den beiden mittleren Zahlen.

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