sql >> Databasteknik >  >> RDS >> Mysql

Hur man grupperar efter månad i MySQL

Ibland kan du behöva aggregera data per månad i MySQL. I den här artikeln kommer vi att titta på olika sätt att gruppera efter månad i MySQL.


Hur man grupperar efter månad i MySQL

Vi kommer att använda date_format funktion för att formatera datum till månadsvärden och gruppera efter månad.

Här är syntaxen för date_format-funktionen.

date_format(value, format string)

I ovanstående funktion måste du ange ett värde som en bokstavlig, ett annat funktions- eller kolumnnamn och en formatsträng som anger formatet som detta värde måste konverteras till.

Här är ett exempel för att konvertera en datumsträng till månad.

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

Låt oss säga att du har en tabell försäljning(id, order_date, summa)

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 också:Hur man tar bort NOT NULL-begränsning i MySQL


Gruppera efter månadsnamn

Här är SQL-frågan som ska grupperas efter månadsnamn.

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 ovanstående SQL-fråga använder vi date_format(order_date, “%M”) för att konvertera en datumkolumn till månadsnamn och använd summa kolumnen för att summera försäljningsbeloppen.


Gruppera efter månad och år

Här är SQL-frågan att gruppera efter månad och å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 ovanstående fråga använder vi date_format för att konvertera datumkolumnens värden till månads- och årsnamn. Vi använder också funktionerna YEAR() och MONTH() för att säkerställa att data grupperas och sorteras efter månads- och årsnummer.

I ovanstående fråga, om vi använder date_format fungerar i grupp för sats, så kommer MySQL att sortera grupperna alfabetiskt, istället för kronologiskt. Se nedan.

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

Behöver du ett rapporteringsverktyg för MySQL? Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. 10 tekniker för att skapa formulär i Microsoft Access

  2. Databasdesign för flerspråkiga applikationer

  3. Ansible älskar PostgreSQL

  4. Ändra storlek på tabell-/kolumn-/indexnamn i oracle 11g eller 12c