sql >> Database >  >> RDS >> Mysql

Hoe te groeperen op maand in MySQL

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!

  1. Genereer tabelrelatiediagram van bestaand schema (SQL Server)

  2. Fout 1033 ontvangen inloggen op de standby

  3. Hoe de DateTime naar de tijd te casten

  4. Hoe mysqlnd voor php inschakelen?