So berechnen Sie den median von AWS Redshift?
Meisten Datenbanken verfügen über eine integrierte Funktion zur Berechnung des median, aber ich sehe nichts für median in Amazon Redshift.
Könnte man berechnet den median mit einer Kombination der nth_value() und count() Analyse-Funktionen, aber das scheint kitschige. Ich wäre sehr überrascht, wenn Sie ein analytics-db nicht über eine eingebaute Methode zur Berechnung der median-also ich nehme an, ich bin etwas fehlt.
http://docs.aws.amazon.com/redshift/latest/dg/r_Examples_of_NTH_WF.html
http://docs.aws.amazon.com/redshift/latest/dg/c_Window_functions.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Und als der 2014-10-17, Rotverschiebung unterstützt die MEDIAN Fenster-Funktion:
Versuchen die NTILE Funktion.
Würden Sie teilen Ihre Daten in 2 Ranglisten-Gruppen und wählen Sie den minimalen Wert aus der ersten Gruppe. Das ist, weil in datasets mit einer ungeraden Anzahl von Werten, die ersten ntile 1 mehr Wert als der zweite. Diese Annäherung sollte die Arbeit sehr gut für große datasets.
Hatte ich Schwierigkeiten mit diesem auch, aber es hat einige Hilfe von Amazon. Da die 2014-06-30-version von Redshift, Sie können dies tun, mit der PERCENTILE_CONT oder PERCENTILE_DISC Fenster-Funktionen.
Sind Sie etwas seltsam zu verwenden, wie Sie tack wird der median (oder was auch immer-Perzentil, die Sie wählen) auf jeder Zeile. Dass man in einer Unterabfrage, und dann nehmen Sie die MIN (oder was auch immer) der mittleren Spalte.
# select count(num), min(median) as median
from
(select num, percentile_cont (0.5) within group (order by num) over () as median from temp);
count | median
-------+--------
5 | 4.0
(Der Grund, warum es kompliziert ist, die Fenster-Funktionen können auch Ihre eigenen mini-group-by und-Bestellung geben Sie den median von vielen Gruppen, alle auf einmal, und andere tricks.)
Im Falle einer geraden Anzahl von Werten, CONT(inuous) interpolieren zwischen den beiden mittleren Werte, bei denen DISC-Netz(rete), Holen einer von Ihnen.
Ich in der Regel verwenden die NTILE Funktion zum aufteilen der Daten in zwei Gruppen, wenn ich bin auf der Suche nach einer Antwort, die nahe genug ist. Allerdings, wenn ich die exakten median (z.B. der Mittelpunkt einer geraden Satz von Zeilen), benutze ich eine Technik vorgeschlagen, die auf der AWS Redshift Diskussionsforum.
Diese Technik sortiert die Zeilen in sowohl aufsteigender und absteigender Reihenfolge, dann, wenn es eine ungerade Anzahl von Zeilen, es gibt den Mittelwert der mittleren Reihe (das ist, wo row_num_asc = row_num_desc), die einfach in der mittleren Zeile selbst.
Wenn es eine gerade Anzahl von Zeilen, es gibt den Durchschnitt der beiden mittleren Zeilen.