Monate innerhalb eines bestimmten Datumsbereichs generieren, einschließlich leerer Werte
Frage:
In MySQL , wie kann ich eine Liste aller Monate innerhalb eines bestimmten Datumsbereichs erstellen, auch wenn für einige Monate keine Werte vorhanden sind?
Antwort:
Um dies zu erreichen, erstellen Sie eine separate Tabelle, die alle möglichen Monate enthält, wie zum Beispiel:
CREATE TABLE dateTable ( myDate DATE NOT NULL, myYear SMALLINT NOT NULL, myMonth TINYINT UNSIGNED NOT NULL );
Füllen Sie diese Tabelle mit allen Monaten, die Sie in Ihren Daten finden können.
Verwenden Sie dann einen LEFT JOIN, um Ihr Original zu kombinieren Tabelle, myTable, mit dateTable:
SELECT DT.myYear, DT.myMonth, AVG(myTable.value1) AS avg_value_1, AVG(myTable.value2) AS avg_value_2 FROM dateTable AS DT LEFT JOIN myTable ON DT.myDate = myTable.save_date WHERE DT.myDate BETWEEN '2009-01-01' AND '2009-07-01' GROUP BY DT.myYear, DT.myMonth
Dadurch werden Durchschnittswerte für alle Monate innerhalb des angegebenen Bereichs abgerufen, einschließlich Monaten ohne Werte in myTable. Der LEFT JOIN stellt sicher, dass leere Werte eingeschlossen werden, indem DT.myDate mit allen Zeilen in myTable abgeglichen wird, unabhängig davon, ob sie entsprechende Werte haben.
Sie können die Ausgabe weiter anpassen, indem Sie die GROUP BY-Klausel anpassen, um Ergebnisse nach zu gruppieren gewünschte Zeiträume, z. B. Finanzquartale oder Wochentage. Dieser Ansatz bietet eine bequeme und effiziente Möglichkeit, umfassende Berichte mit vollständiger Monatsabdeckung zu erstellen.
Das obige ist der detaillierte Inhalt vonWie generiere ich Monate innerhalb eines bestimmten Datumsbereichs in MySQL, einschließlich leerer Werte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!