Czasami może być konieczne agregowanie danych według miesiąca w MySQL. W tym artykule przyjrzymy się różnym sposobom grupowania według miesiąca w MySQL.
Jak grupować według miesięcy w MySQL
Użyjemy date_format funkcja formatowania daty na wartości miesiąca i grupowania według miesiąca.
Oto składnia funkcji date_format.
date_format(value, format string)
W powyższej funkcji musisz określić wartość jako literał, nazwę innej funkcji lub kolumny oraz ciąg formatujący, który określa format, na jaki ta wartość ma zostać przekonwertowana.
Oto przykład konwersji ciągu daty na miesiąc.
mysql> SELECT DATE_FORMAT("2020-06-15", "%M"); +---------------------------------+ | DATE_FORMAT("2020-06-15", "%M") | +---------------------------------+ | June | +---------------------------------+
Załóżmy, że masz tabelę sprzedaż(id, data_zamówienia, kwota)
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 | +------+------------+--------+
Przeczytaj także:Jak usunąć ograniczenie NOT NULL w MySQL
Grupuj według nazwy miesiąca
Oto zapytanie SQL do grupowania według nazwy miesiąca.
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 | +-------------------------------+-------------+
W powyższym zapytaniu SQL używamy date_format(order_date, „%M”) przekonwertować kolumnę daty na nazwę miesiąca i użyć sum kolumna, aby zsumować kwoty sprzedaży.
Grupuj według miesiąca i roku
Oto zapytanie SQL do grupowania według miesiąca i roku.
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 | +----------------------------------+-------------+
W powyższym zapytaniu używamy date_format do konwersji wartości kolumny daty na nazwy miesięcy i lat. Używamy również funkcji YEAR() i MONTH(), aby upewnić się, że dane są pogrupowane i uporządkowane według numerów miesięcy i lat.
W powyższym zapytaniu, jeśli używamy date_format funkcji w klauzuli group by, wtedy MySQL posortuje grupy alfabetycznie, a nie chronologicznie. Zobacz poniżej.
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 | +-------------------------------+-------------+
Potrzebujesz narzędzia do raportowania dla MySQL? Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!