Wie wird der Median in MySQL berechnet

Gustavo du Mortier 11 Dezember 2023
  1. Die genaueste Art, den Median in MySQL zu berechnen
  2. Verwenden Sie UDFs (User-Defined Functions), um MySQL Funktionalität hinzuzufügen
Wie wird der Median in MySQL berechnet

In diesem Tutorial zeigen wir Ihnen einige Möglichkeiten, den Median einer Reihe von Zahlen in MySQL effizient zu berechnen.

MySQL hat keine eingebaute Funktion zur Berechnung des statistischen Medians einer Reihe von Zahlen. Deshalb müssen Sie, wenn Sie einen Median berechnen müssen, dies mit Hilfe des benutzerdefinierten Codes tun.

Der Median ist das mittlere Element der Zahlenreihe, die Sie analysieren. Die Ermittlung dieses Elements kann ein langsamer Prozess sein, wenn Sie mit einer großen Stichprobe arbeiten und dies nicht effizient tun. Der Prozess kann in manchen Situationen auch knifflig sein. Beispielsweise können einige Algorithmen zwar mit ungeraden Zahlenmengen arbeiten, aber nicht mit geraden Mengen oder umgekehrt.

Die genaueste Art, den Median in MySQL zu berechnen

Angenommen, Sie haben eine Tabelle Dataset mit einer Spalte MyNumber vom Typ float, und Sie müssen den Median der Datenreihe von MyNumber ermitteln. Der genaueste Weg, den Median mit einem Algorithmus zu berechnen, der in allen Fällen funktioniert, wäre die Verwendung des folgenden Skripts:

SELECT AVG(mid_vals) AS 'median' FROM (
 SELECT tab1.MyNumber AS 'mid_vals' FROM
  (
   SELECT @row:=@row+1 AS 'row', a.MyNumber
   FROM dataset AS a, (SELECT @row:=0) AS r
   ORDER BY a.MyNumber
  ) AS tab1,
  (
   SELECT COUNT(*) as 'count'
   FROM dataset x
  ) AS tab2
  WHERE tab1.row >= tab2.count/2 and tab1.row <= ((tab2.count/2) +1)) AS tab3;

Wenn die Tabelle eine große Anzahl von Zeilen hat, benötigen Sie einen Index auf der Spalte MyNumber und stellen Sie sicher, dass dieser Index zum Filtern und Sortieren verwendet wird, damit die Anweisung gut funktioniert.

Verwenden Sie UDFs (User-Defined Functions), um MySQL Funktionalität hinzuzufügen

Mathematische und statistische Funktionen sind sehr alltäglich, und Sie sollten das Rad nicht neu erfinden, wenn Sie eine Funktion wie den Median verwenden müssen. Daher können Sie sich eine gut getestete benutzerdefinierte Funktion greifen, die diese Aufgabe erfüllt.

Auf dieser Website finden Sie eine Reihe von UDFs, die Sie kostenlos benutzen können, um MySQL um statistische Funktionen zu erweitern. Eine dieser UDFs ist die median-Funktion. Sie hat einen Eingabeparameter und einen Ausgabeparameter, beide vom Typ REAL. Der Eingabeparameter ist die Spalte, die den Satz von Zahlen zur Berechnung des Medians enthält, und der Ausgabeparameter ist der berechnete Median.

Nachdem Sie den Quellcode heruntergeladen haben, fügen Sie die UDF mit diesem Befehl hinzu:

CREATE AGGREGATE FUNCTION median RETURNS REAL SONAME 'udf_median.so';

Dann können Sie die Funktion innerhalb einer SELECT-Anweisung wie folgt verwenden:

SELECT MEDIAN(MyNumber) FROM dataset