Manchmal müssen Sie Daten in MySQL möglicherweise nach Monaten aggregieren. In diesem Artikel sehen wir uns verschiedene Möglichkeiten zum Gruppieren nach Monat in MySQL an.
Wie man in MySQL nach Monat gruppiert
Wir verwenden date_format Funktion, um das Datum in Monatswerte zu formatieren und nach Monat zu gruppieren.
Hier ist die Syntax der Funktion date_format.
date_format(value, format string)
In der obigen Funktion müssen Sie den Wert als Literal, einen anderen Funktions- oder Spaltennamen und eine Formatzeichenfolge angeben, die das Format angibt, in das dieser Wert konvertiert werden muss.
Hier ist ein Beispiel, um eine Datumszeichenfolge in einen Monat umzuwandeln.
mysql> SELECT DATE_FORMAT("2020-06-15", "%M"); +---------------------------------+ | DATE_FORMAT("2020-06-15", "%M") | +---------------------------------+ | June | +---------------------------------+
Nehmen wir an, Sie haben eine Tabelle sales(id, order_date, amount)
mysql> create table sales(id int, order_date date, amount int); mysql> insert into sales(id,order_date,amount) values(1,'2020-10-01',150), (2,'2020-10-10',100), (3,'2020-11-05',250), (4,'2020-11-15',150), (5,'2020-12-01',350), (6,'2020-12-21',250); mysql> select * from sales; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2020-10-01 | 150 | | 2 | 2020-10-10 | 100 | | 3 | 2020-11-05 | 250 | | 4 | 2020-11-15 | 150 | | 5 | 2020-12-01 | 350 | | 6 | 2020-12-21 | 250 | +------+------------+--------+
Lesen Sie auch:So entfernen Sie die NOT NULL-Einschränkung in MySQL
Nach Monatsnamen gruppieren
Hier ist die SQL-Abfrage zum Gruppieren nach Monatsnamen.
mysql> select date_format(order_date, '%M'),sum(amount) from sales group by date_format(order_date, '%M'); +-------------------------------+-------------+ | date_format(order_date, '%M') | sum(amount) | +-------------------------------+-------------+ | December | 600 | | November | 400 | | October | 250 | +-------------------------------+-------------+
In der obigen SQL-Abfrage verwenden wir date_format(order_date, „%M“) um eine Datumsspalte in einen Monatsnamen umzuwandeln, und verwenden Sie sum Spalte, um die Verkaufsbeträge zu addieren.
Nach Monat und Jahr gruppieren
Hier ist die SQL-Abfrage zum Gruppieren nach Monat und Jahr.
mysql> select date_format(order_date, '%M %Y'),sum(amount) from sales group by year(order_date),month(order_date); +----------------------------------+-------------+ | date_format(order_date, '%M %Y') | sum(amount) | +----------------------------------+-------------+ | October 2020 | 250 | | November 2020 | 400 | | December 2020 | 600 | +----------------------------------+-------------+
In der obigen Abfrage verwenden wir date_format, um die Werte der Datumsspalte in Monats- und Jahresnamen umzuwandeln. Wir verwenden auch die Funktionen YEAR() und MONTH(), um sicherzustellen, dass die Daten nach Monats- und Jahreszahlen gruppiert und geordnet sind.
Wenn wir in der obigen Abfrage date_format verwenden Funktion in group by Klausel, dann sortiert MySQL die Gruppen alphabetisch statt chronologisch. Siehe unten.
mysql> select date_format(order_date, '%M'),sum(amount) from sales group by date_format(order_date, '%M'); +-------------------------------+-------------+ | date_format(order_date, '%M') | sum(amount) | +-------------------------------+-------------+ | December | 600 | | November | 400 | | October | 250 | +-------------------------------+-------------+
Benötigen Sie ein Reporting-Tool für MySQL? Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!