Hallo,
wie der Titel schon sagt, geht es darum, dass der Median berechnet werden soll.
Da es keine solche Funktion in SQL gibt, habe ich versucht den Median manuell zu berechnen. Es ist leider beim Versuch geblieben, daher wäre ich Euch sehr für Eure Hilfe dankbar. Natürlich habe ich mich schon im Vorfeld in Foren und im Internet informiert, bin aber zu keinem schlüssigen Ergebniss gekommen.
Mit diesem Query berechne ich den Durschnitt aller Stunden:
PHP-Code:
SELECT
ROUND(SUM((Unix_Timestamp(te.end)-Unix_Timestamp(te.start))/3600)/count(distinct t.Spalte1),3) AS Stunden
FROM Tabelle1 t
INNER JOIN Tabelle2 te ON t.Spalte1 = te.Spalte2
WHERE Spalte3>0;
Nun habe ich zwei Probleme:
1. Ich lasse mir zwei Spalten ausgeben. Einmal die Anzahl der IDs, einmal die Anzahl der Durchschnittsstunden, wobei ich den Median der Durchschnittstundenzahl ausgegeben haben möchte.
Ist die Anzahl der IDs gerade, so müssen die Werte aus der Spalte Stunden summiert und durch 2 dividiert werden.
Ist die Anzahl der IDs ungerade, sollte der Wert aus der Spalte Stunden genommen und ausgegeben werden.
Wie kann ich diese Befehle miteinander verknüpfen?
2. Ich habe mir überlegt, dass ich das ganze vielleicht in einer IF-Abfrage regeln könnte, etwa so:
PHP-Code:
(IF((count(distinct t.id)+1)/2 = ungerade,dann wähle median, sonst wähle median aus (1/2*((count(distinct t.id)/2)+((count(distinct t.id)/2)+1))))
Hm, für Fragen stehe ich Euch natürlich gerne zur Verfügung.
Vielen Dank im Voraus,
Faili