Понякога може да се наложи да агрегирате данни по месеци в MySQL. В тази статия ще разгледаме различни начини за групиране по месеци в MySQL.
Как да групирате по месеци в MySQL
Ще използваме формат_дата функция за форматиране на датата в месечни стойности и групиране по месеци.
Ето синтаксиса на функцията date_format.
format_date(стойност, форматен низ)
В горната функция трябва да посочите стойност като литерал, друга функция или име на колона и форматен низ, който определя формата, в който тази стойност трябва да бъде преобразувана.
Ето пример за преобразуване на низ от дата в месец.
mysql> SELECT DATE_FORMAT("2020-06-15", "%M");+-------------------------- ------+| DATE_FORMAT("2020-06-15", "%M") |+-------------------------------- +| юни |+---------------------------------+
Да кажем, че имате таблица sales(id, order_date, amount)
mysql> създайте таблица sales(id int, order_date, amount int);mysql> вмъкнете в 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);mysql> изберете * от продажбите;+------+------------+------ --+| идентификатор | поръчка_дата | сума |+------+------------+-------+| 1 | 2020-10-01 | 150 || 2 | 10.10.2020 | 100 || 3 | 2020-11-05 | 250 || 4 | 15.11.2020 | 150 || 5 | 2020-12-01 | 350 || 6 | 21.12.2020 | 250 |+------+-----------+-------+
Прочетете също:Как да премахнете ограничението NOT NULL в MySQL
Групиране по име на месец
Ето SQL заявката за групиране по име на месец.
mysql> изберете date_format(order_date, '%M'),sum(amount) от групата продажби по date_format(order_date, '%M');+--------------- ----------------+------------+| date_format(order_date, '%M') | сума(сума) |+------------------------------+------------ -+| декември | 600 || ноември | 400 || октомври | 250 |+-------------------------------+------------+предварително>В горната SQL заявка използваме format_date(order_date, “%M”) за да конвертирате колона за дата в име на месец и използвайте сума колона за сумиране на сумите на продажбите.
Групиране по месец и година
Ето SQL заявката за групиране по месец и година.
mysql> изберете формат на дата(дата_на_поръчка, '%M %Y'),сума(сума) от група продажби по година(дата_на_поръчка),месец(дата_на_поръчка);+------------ ---------------------+------------+| date_format(order_date, '%M %Y') | сума(сума) |+---------------------------------+-------- ----+| октомври 2020 г. | 250 || ноември 2020 г. | 400 || декември 2020 г. | 600 |+---------------------------------+----------- -+В горната заявка използваме date_format, за да преобразуваме стойностите на колоната за дата в имена на месеци и години. Ние също така използваме функциите YEAR() и MONTH(), за да гарантираме, че данните са групирани и подредени по номера на месец и година.
В горната заявка, ако използваме date_format функционира в група по клауза, тогава MySQL ще сортира групите по азбучен ред, вместо по хронологичен ред. Вижте по-долу.
mysql> изберете date_format(order_date, '%M'),sum(amount) от групата продажби по date_format(order_date, '%M');+--------------- ----------------+------------+| date_format(order_date, '%M') | сума(сума) |+------------------------------+------------ -+| декември | 600 || ноември | 400 || октомври | 250 |+-------------------------------+------------+предварително>Нуждаете се от инструмент за отчитане за MySQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!