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

Sådan grupperes efter måned i MySQL

Nogle gange skal du muligvis samle data efter måned i MySQL. I denne artikel vil vi se på forskellige måder at gruppere efter måned i MySQL.


Sådan grupperer du efter måned i MySQL

Vi bruger dato_format funktion til at formatere dato til månedsværdier og gruppere efter måned.

Her er syntaksen for funktionen dato_format.

date_format(value, format string)

I ovenstående funktion skal du angive værdi som en bogstavelig, en anden funktion eller kolonnenavn og en formatstreng, der angiver det format, som denne værdi skal konverteres til.

Her er et eksempel på at konvertere en datostreng til måned.

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

Lad os sige, at du har en tabel salg(id, ordre_dato, beløb)

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

Læs også:Sådan fjerner du NOT NULL-begrænsning i MySQL


Gruppér efter månedsnavn

Her er SQL-forespørgslen, der skal grupperes efter månedsnavn.

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

I ovenstående SQL-forespørgsel bruger vi dato_format(ordre_date, "%M") for at konvertere en datokolonne til månedsnavn, og brug sum kolonne for at lægge salgsbeløbene sammen.


Gruppér efter måned og år

Her er SQL-forespørgslen, der skal grupperes efter måned og år.

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

I ovenstående forespørgsel bruger vi dato_format til at konvertere datokolonnens værdier til måneds- og årsnavne. Vi bruger også funktionerne YEAR() og MONTH() for at sikre, at data er grupperet og sorteret efter måneds- og årstal.

I ovenstående forespørgsel, hvis vi bruger dato_format funktion i gruppe for klausul, så vil MySQL sortere grupperne alfabetisk i stedet for kronologisk. Se nedenfor.

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

Har du brug for et rapporteringsværktøj til MySQL? Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. Tilføj kun data til SQLite-databasen én gang og læs flere gange

  2. Udskrivning af værdien af ​​en variabel i SQL Developer

  3. kan ikke modtage ud parameter fra oracle procedure udført af mybatis

  4. Softwarevirksomheder, der arbejder på Oracle D2k, PLSQL Technologies i Noida