Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
MEDIANFunktion
Berechnet den Medianwert für den Wertebereich. NULL
-Werte im Bereich werden ignoriert.
MEDIANist eine umgekehrte Verteilungsfunktion, die von einem kontinuierlichen Verteilungsmodell ausgeht.
MEDIANist ein Sonderfall von. PERCENTILE_CONT
Syntax
MEDIAN(median_expression)
Argumente
- median_expression
-
Die Zielspalte oder der Ausdruck, für die/den die Funktion ausgeführt wird.
Datentypen
Der Rückgabetyp wird durch den Datentyp von median_expression festgelegt. Die folgende Tabelle zeigt den Rückgabetyp für jeden median_expression-Datentyp an.
Input type | Rückgabetyp |
---|---|
INT2 , INT4 , INT8 , NUMERIC , DECIMAL |
DECIMAL |
FLOAT , DOUBLE |
DOUBLE |
DATE |
DATE |
TIMESTAMP |
TIMESTAMP |
TIMESTAMPTZ |
TIMESTAMPTZ |
Nutzungshinweise
Wenn das Argument median_expression ein DECIMAL
Datentyp ist, der mit einer maximalen Genauigkeit von 38 Ziffern definiert wurde, ist es möglich, dass entweder ein ungenaues Ergebnis oder ein Fehler zurückgegeben MEDIAN wird. Wenn der Rückgabewert der MEDIAN Funktion 38 Ziffern überschreitet, wird das Ergebnis gekürzt, bis es passt, was zu einem Genauigkeitsverlust führt. Wenn während der Interpolierung ein Zwischenergebnis die maximal zulässige Genauigkeit überschreitet, erfolgt ein numerischer Überlauf und die Funktion gibt einen Fehler zurück. Um diese Bedingungen zu vermeiden, werden die Verwendung eines Datentyps mit einer niedrigeren Genauigkeit oder die Umwandlung des Arguments median_expression in ein Argument mit niedrigerer Genauigkeit empfohlen.
Wenn eine Anweisung mehrere Aufrufe von sortierbasierten Aggregatfunktionen (LISTAGG, PERCENTILE _ oderMEDIAN) enthältCONT, müssen sie alle dieselben ORDER BY-Werte verwenden. Beachten Sie, dass auf den Ausdruckswert eine implizite Reihenfolge nach MEDIAN angewendet wird.
Die folgende Anweisung gibt beispielsweise einen Fehler zurück.
SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid;
An error occurred when executing the SQL command: SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid; ERROR: within group ORDER BY clauses for aggregate functions must be the same
Die folgende Anweisung wird erfolgreich ausgeführt.
SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(salesid) FROM sales GROUP BY salesid, pricepaid;
Beispiele
In den folgenden Beispielen wird die TICKIT Beispieldatenbank verwendet. Weitere Informationen finden Sie unter Beispieldatenbank.
Das folgende Beispiel zeigt, dass dies MEDIAN zu den gleichen Ergebnissen führt wie PERCENTILE _ CONT (0.5).
SELECT TOP 10 DISTINCT sellerid, qtysold, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY qtysold), MEDIAN(qtysold) FROM sales GROUP BY sellerid, qtysold;
+----------+---------+-----------------+--------+ | sellerid | qtysold | percentile_cont | median | +----------+---------+-----------------+--------+ | 2 | 2 | 2 | 2 | | 26 | 1 | 1 | 1 | | 33 | 1 | 1 | 1 | | 38 | 1 | 1 | 1 | | 43 | 1 | 1 | 1 | | 48 | 2 | 2 | 2 | | 48 | 3 | 3 | 3 | | 77 | 4 | 4 | 4 | | 85 | 4 | 4 | 4 | | 95 | 2 | 2 | 2 | +----------+---------+-----------------+--------+
Im folgenden Beispiel wird die durchschnittliche Verkaufsmenge für jede sellerid ermittelt.
SELECT sellerid, MEDIAN(qtysold) FROM sales GROUP BY sellerid ORDER BY sellerid LIMIT 10;
+----------+--------+ | sellerid | median | +----------+--------+ | 1 | 1.5 | | 2 | 2 | | 3 | 2 | | 4 | 2 | | 5 | 1 | | 6 | 1 | | 7 | 1.5 | | 8 | 1 | | 9 | 4 | | 12 | 2 | +----------+--------+
Verwenden Sie das folgende Beispiel, um die Ergebnisse der vorherigen Abfrage für die erste sellerid zu überprüfen.
SELECT qtysold FROM sales WHERE sellerid=1;
+---------+ | qtysold | +---------+ | 2 | | 1 | +---------+