- Kategorien:
Aggregationsfunktionen (Allgemein), Fensterfunktionen
MEDIAN¶
Bestimmt den Mittelwert eines Wertesatzes.
Syntax¶
Aggregatfunktion
MEDIAN( <expr> )
Fensterfunktionen
MEDIAN( <expr> ) OVER ( [ PARTITION BY <expr2> ] )
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));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 | +------------+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);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 | +---+-----------+