Ich versuche eine MySQL-Abfrage zu schreiben, um einen Durchschnittswert pro Monat für alle Monate zwischen bestimmten Daten zu erhalten. Meine Idee ist folgende:Wählen Sie alle Monate innerhalb eines bestimmten Zeitraums, einschließlich der mit 0 Werte
Abfrage, so etwas wie
SELECT AVG(value1) as avg_value_1,
AVG(value2) as avg_value_2,
MONTH(save_date) as month,
YEAR(save_date) as year
FROM myTable
WHERE save_date BETWEEN '2009-01-01' AND '2009-07-01'
GROUP BY YEAR(save_date), MONTH(save_date)
avg_value_1 | avg_value_2 | month | year
5 | 4 | 1 | 2009
2 | 1 | 2 | 2009
7 | 5 | 3 | 2009
0 | 0 | 4 | 2009 <---
6 | 5 | 5 | 2009
3 | 6 | 6 | 2009
Sie sehen, wurden keine Werte im April 2009 eingetragen, doch ich will es zeigen sich als 0, 0 Wert in der Ausgabe. Irgendwelche Ideen, wie man das erreicht? Kann das in MySQL gemacht werden?
Vielen Dank für Ihre Antwort, aber brauche ich wirklich eine Tabelle mit allen möglichen Daten? Das kann nicht der einfachste Weg sein! :) –
Es ist schwer, Werte zurückzugeben, die nicht existieren. :) –
Guter Punkt Lieven, aber MySQL weiß über alle Daten auswendig, wenn gewöhnliche GetDate() und DateAdd() usw. verwendet werden. Ich denke nur, dass es eine Weise geben muss, sie zu holen! –