Mysql
 sql >> Database >  >> RDS >> Mysql

Come raggruppare per mese in MySQL

A volte potrebbe essere necessario aggregare i dati per mese in MySQL. In questo articolo, esamineremo diversi modi per raggruppare per mese in MySQL.


Come raggruppare per mese in MySQL

Useremo date_format funzione per formattare la data nei valori del mese e raggruppare per mese.

Ecco la sintassi della funzione date_format.

date_format(value, format string)

Nella funzione precedente è necessario specificare il valore come valore letterale, un'altra funzione o nome di colonna e una stringa di formato che specifichi il formato in cui deve essere convertito questo valore.

Ecco un esempio per convertire una stringa di data in un mese.

mysql> SELECT DATE_FORMAT("2020-06-15", "%M");
+---------------------------------+
| DATE_FORMAT("2020-06-15", "%M") |
+---------------------------------+
| June                            |
+---------------------------------+

Supponiamo che tu abbia una tabella vendite(id, data_ordine, importo)

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 |
+------+------------+--------+

Leggi anche:Come rimuovere il vincolo NOT NULL in MySQL


Raggruppa per nome mese

Ecco la query SQL per raggruppare per nome del mese.

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 |
+-------------------------------+-------------+

Nella query SQL precedente utilizziamo date_format(order_date, “%M”) per convertire una colonna di data nel nome del mese e utilizzare sum colonna per sommare gli importi delle vendite.


Raggruppa per mese e anno

Ecco la query SQL da raggruppare per mese e anno.

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 |
+----------------------------------+-------------+

Nella query precedente, utilizziamo date_format per convertire i valori della colonna della data in nomi di mesi e anni. Utilizziamo anche le funzioni ANNO() e MESE() per garantire che i dati siano raggruppati e ordinati per mese e anno.

Nella query precedente, se utilizziamo date_format funzione in gruppo per clausola, quindi MySQL ordinerà i gruppi in ordine alfabetico, anziché cronologico. Vedi sotto.

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 |
+-------------------------------+-------------+

Hai bisogno di uno strumento di reporting per MySQL? Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!