MEDIANFunktion - Amazon Redshift

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 | +---------+