Wie berechnen Sie den Median in SQL

May 23

Wie berechnen Sie den Median in SQL

Berechnung des Medians eines Satzes ist schwieriger als einfach Berechnung der Mittelwert oder Erwartungswert eines Satzes. Fügen Sie in der Syntax und Komplexität von SQL und die Aufgabe kann unüberwindlich scheinen auf den ersten. Aber mit einigen einfachen Konzepte und ein paar Beispiele, Berechnung den Median ist kein Schweiß. Dieses How-to verwendet Transact-SQL für die Beispiele.

Anweisungen

Den Median finden

1 Den Unterschied zwischen den Median und den Mittelwert eines Satzes zu verstehen. Der Median ist der "mittleren Wert" einer Menge während der Mittelwert dem Durchschnitt aller Elemente einer Menge entspricht. Da eine geordnete Menge von Zahlen {1, 2, 6, 9, 10, 11}, der Median wird z.B. 7,5 ([6 + 9] / 2), aber das Mittel ist 6.5 ([1 + 2 + 6 + 9 + 10 + 11] / 6).

Um den Median zu berechnen, die Anzahl der Elemente im Satz. Wenn die Anzahl gerade ist, nehmen Sie den Durchschnitt des Elements an der Position gefunden werden, zählen die gesamten Elemente und Division durch zwei und die Position durch die Gesamtzahl der Elemente durch 2 dividiert und Hinzufügen eines gefunden. Wenn die Anzahl ungerade ist, nehmen Sie das Element an der Position, gekennzeichnet durch die Gesamtzahl durch zwei geteilt und auf die nächste ganze Zahl aufgerundet.

2 Erstellen Sie eine geordnete Menge von Zahlen, mit einem neuen integralen Index. Beispielsweise wenn die numerischen Daten in der Spalte "Num" der Tabelle "Daten" gespeichert ist, erstellen Sie eine neue temporäre Tabelle mit dem Wert "Num" mit einem neuen Index:

Erstellen der Tabelle #values)ID Int nicht NULL IDENTITY(1,1),NUM numeric(9,4))

INSERT INTO #values (Num)Wählen Sie numAUS DatenORDER BY num

Die ORDER BY-Anweisung ist sehr wichtig für die Berechnung des Medians.

3 Markieren Sie die Daten aus der temporären Tabelle, wobei die ID gleich die Hälfte der Anzahl der Datensätze in der Tabelle ist. Wenn es eine ungerade Anzahl von Datensätzen, nehmen Sie den Mittelwert der beiden Werte als die endgültige Median. Dies kann im einzelnen folgende Abfrage erreicht werden:

Wählen SIE AVERAGE(num)VON #values vBEITRETEN)SELECT COUNT(*) AS cntVON #values _v) C auf ()c.ID = CEILING(_v.cnt / 2.0)UND)

_v.cnt % 2 = 1 -- cnt is odd OR ( _v.cnt % 2 = 0 -- cnt is even AND c.ID = (_v.cnt / 2.0) + 1 )

))

Diese Abfrage verwendet eine Unterabfrage, um die Anzahl der Datensätze zu finden, so dass der mittlere Wert ermittelt werden kann. In dem Fall ein sogar Graf und eine ungerade Anzahl, die Verwendung von Decke zu vervollständigen (_v.cnt / 2.0) ist korrekt. (z.B. auch: 6 / 2 = 3; Ungerade: 7 / 2 = 3,5, ist gerundet bis zu 4) Darüber hinaus, wenn die Anzahl gerade ist, hinzufügen 1 bis (_v.cnt / 2.0), das zweite Element in der endgültigen Median aufnehmen zu erhalten.

Tipps & Warnungen

  • Verwenden Sie eine aktuelle Version von Microsoft SQL Server, z. B. 2005 oder 2008, können Sie "Common Table Expressions" statt Erstellen einer temporären Tabelle. Abhängig von der Schema und Server-Konfiguration kann dies eine Leistungssteigerung vorsehen.