Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como agrupar por mês no MySQL


Às vezes você pode precisar agregar dados por mês no MySQL. Neste artigo, veremos diferentes maneiras de agrupar por mês no MySQL.



Como agrupar por mês no MySQL


Usaremos date_format função para formatar a data em valores de mês e agrupar por mês.

Aqui está a sintaxe da função date_format.
date_format(valor, string de formato)

Na função acima, você precisa especificar o valor como um literal, outra função ou nome de coluna e uma string de formato que especifica o formato para o qual esse valor precisa ser convertido.

Aqui está um exemplo para converter uma string de data em mês.
mysql> SELECT DATE_FORMAT("2020-06-15", "%M");+--------------------------- ------+| DATE_FORMAT("2020-06-15", "%M") |+------------------------------------------------ +| Junho |+---------------------------------+

Digamos que você tenha uma tabela vendas(id, order_date, amount)
mysql> cria a tabela sales(id int, order_date date, amount int);mysql> insere em sales(id,order_date,amount) values(1,'2020-10-01',150), (2,' 2020-10-10',100), (3,'2020-11-05',250), (4,'2020-15-15',150), (5,'2020-12-01',350 ), (6,'2020-12-21',250);mysql> select * from sales;+------+------------+------ --+| identificação | data_pedido | quantidade |+------+------------+--------+| 1 | 01-10-2020 | 150 || 2 | 2020-10-10 | 100 || 3 | 2020-11-05 | 250 || 4 | 2020-11-15 | 150 || 5 | 01-12-2020 | 350 || 6 | 21-12-2020 | 250 |+------+------------+--------+

Leia também:Como remover a restrição NOT NULL no MySQL



Agrupar por nome do mês


Aqui está a consulta SQL para agrupar por nome do mês.
mysql> selecione date_format(order_date, '%M'),sum(amount) do grupo de vendas por date_format(order_date, '%M');+--------------- --+-------------+| date_format(order_date, '%M') | soma(quantidade) |+-------------------------------+------------ -+| Dezembro | 600 || Novembro | 400 || Outubro | 250 |+------------------------------------------+-------------+ 
Na consulta SQL acima usamos date_format(order_date, “%M”) para converter uma coluna de data em nome de mês e use sum coluna para somar os valores das vendas.



Agrupar por mês e ano


Aqui está a consulta SQL para agrupar por mês e ano.
mysql> selecione date_format(order_date, '%M %Y'),sum(amount) do grupo de vendas por ano(order_date),month(order_date);+------------- -----------+-------------+| date_format(order_date, '%M %Y') | soma(quantidade) |+----------------------------------+--------- ----+| Outubro 2020 | 250 || Novembro 2020 | 400 || Dezembro 2020 | 600 |+----------------------------------+---------------- -+

Na consulta acima, usamos date_format para converter os valores da coluna de data em nomes de mês e ano. Também usamos as funções YEAR() e MONTH() para garantir que os dados sejam agrupados e ordenados por números de mês e ano.

Na consulta acima, se usarmos date_format função na cláusula group by, então o MySQL irá classificar os grupos em ordem alfabética, ao invés de cronologicamente. Ver abaixo.
mysql> selecione date_format(order_date, '%M'),sum(amount) do grupo de vendas por date_format(order_date, '%M');+--------------- --+-------------+| date_format(order_date, '%M') | soma(quantidade) |+------------------------------------------+------------ -+| Dezembro | 600 || Novembro | 400 || Outubro | 250 |+------------------------------------------+-------------+ 
Precisa de uma ferramenta de relatório para MySQL? O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!