Soms moet u gegevens per maand verzamelen in MySQL. In dit artikel zullen we kijken naar verschillende manieren om per maand te groeperen in MySQL.
Hoe te groeperen op maand in MySQL
We gebruiken date_format functie om datum op te maken in maandwaarden en te groeperen per maand.
Hier is de syntaxis van de functie date_format.
date_format(value, format string)
In de bovenstaande functie moet je de waarde specificeren als een letterlijke, een andere functie of kolomnaam, en een format string die het formaat specificeert waarnaar deze waarde geconverteerd moet worden.
Hier is een voorbeeld om een datumreeks om te zetten in een maand.
mysql> SELECT DATE_FORMAT("2020-06-15", "%M"); +---------------------------------+ | DATE_FORMAT("2020-06-15", "%M") | +---------------------------------+ | June | +---------------------------------+
Stel dat u een tabel heeft verkoop(id, order_date, bedrag)
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 | +------+------------+--------+
Lees ook:Hoe de NOT NULL-beperking in MySQL te verwijderen
Groep per maandnaam
Hier is de SQL-query om te groeperen op maandnaam.
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 de bovenstaande SQL-query gebruiken we date_format(order_date, “%M”) om een datumkolom om te zetten in een maandnaam en gebruik som kolom om de verkoopbedragen bij elkaar op te tellen.
Groep per maand en jaar
Hier is de SQL-query om te groeperen op maand en jaar.
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 de bovenstaande query gebruiken we date_format om de waarden van de datumkolommen om te zetten in maand- en jaarnamen. We gebruiken ook de functies YEAR() en MONTH() om ervoor te zorgen dat gegevens worden gegroepeerd en gerangschikt op maand- en jaarnummers.
Als we in de bovenstaande zoekopdracht date_format . gebruiken functie in groep op clausule, dan sorteert MySQL de groepen alfabetisch in plaats van chronologisch. Zie hieronder.
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 | +-------------------------------+-------------+
Een rapportagetool voor MySQL nodig? Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!