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

Como calcular a porcentagem de crescimento mês a mês no MySQL


O crescimento mês a mês é um indicador-chave de desempenho para todos os negócios. Como não há função para calcular o crescimento percentual mês a mês no MySQL, você precisa escrever uma consulta SQL para calcular a mudança mês a mês. Então vamos ver como calcular o crescimento percentual mês a mês no MySQL. Você também pode usá-lo para monitorar a mudança percentual mês a mês ao longo do tempo em seu negócio.


Como calcular a porcentagem de crescimento mês a mês no MySQL


Digamos que você tenha uma tabela de dados month_sales(month,sale) que contém vendas mensais, conforme mostrado abaixo.
mysql> create table monthly_sales(month int,sale int);
mysql> insert into monthly_sales(month,sale) values(1,20),
(2,30),(3,25),(4,45),(5,25);
mysql> select * from monthly_sales;
+-------+------+
| month | sale |
+-------+------+
| 1     |   20 |
| 2     |   30 |
| 3     |   25 |
| 4     |   45 |
| 5     |   25 |
+-------+------+


Você pode calcular o crescimento percentual mês a mês usando o SQL a seguir.
mysql> select month, sale,
    if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
    @last_entry := sale
    from
    (select @last_entry := 0) x,
    (select month, sum(sale) sale
    from   monthly_sales
    group by month) y;
+-------+------+-------------+---------------------+
| month | sale | growth rate | @last_entry := sale |
+-------+------+-------------+---------------------+
| 1     |   20 |           0 |                  20 |
| 2     |   30 |       50.00 |                  30 |
| 3     |   25 |      -16.67 |                  25 |
| 4     |   45 |       80.00 |                  45 |
| 5     |   25 |      -44.44 |                  25 |
+-------+------+-------------+---------------------+


Na consulta acima, para cada linha(mês), armazenamos a venda do mês anterior em uma variável temporária last_entry

No entanto, na maioria dos casos, você terá dados de vendas diários. Nesse caso, você precisa primeiro agregá-lo às vendas mensais e, em seguida, calcular a taxa de crescimento percentual mês a mês. Digamos que você tenha uma tabela de dados sales(created_at, sale) que contém informações de vendas diárias.
mysql> create table sales(order_date date,sale int);

mysql> insert into sales values('2020-01-01',20),
('2020-01-02',25),('2020-01-03',15),('2020-01-04',30),
('2020-02-05',20),('2020-02-10',20),('2020-02-06',25),
('2020-03-07',15),('2020-03-08',30),('2020-03-09',20);

mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-02-05 |   20 |
| 2020-02-10 |   20 |
| 2020-02-06 |   25 |
| 2020-03-07 |   15 |
| 2020-03-08 |   30 |
| 2020-03-09 |   20 |
+------------+------+



Digamos que você queira calcular a taxa de crescimento mensal, aqui está a consulta SQL para isso.
mysql> select month, sale, 
       if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
       @last_entry := sale                  
from
      (select @last_entry := 0) x,
      (select month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales group by month(order_date)) monthly_sales
       group by month) y;		

+-------+------+-------------+---------------------+
| month | sale | growth rate | @last_entry := sale |
+-------+------+-------------+---------------------+
|     1 |   90 |           0 |                  90 |
|     2 |   65 |      -27.78 |                  65 |
|     3 |   65 |        0.00 |                  65 |
+-------+------+-------------+---------------------+   

Na consulta acima, primeiro agregamos as vendas diárias em valores mensais (mostrados em negrito ) e, em seguida, use a consulta anterior para calcular o crescimento percentual.

Bônus de leitura: Como calcular a média de vendas por dia no MySQL

Se você deseja filtrar seus dados antes de calcular o crescimento percentual mês a mês, pode fazer isso adicionando a cláusula WHERE à sua consulta, conforme mostrado abaixo
mysql> select month, sale, 
       if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
       @last_entry := sale                  
from
      (select @last_entry := 0) x,
      (select month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales 
               WHERE condition
               group by month(order_date)) monthly_sales
       group by month) y;


Bônus de leitura: Como calcular o total de vendas por mês no MySQL?

Observe :Como o cálculo do crescimento percentual mês a mês é baseado no conceito de armazenar o valor da linha anterior em uma variável temporária, certifique-se de que sua tabela esteja classificada em ordem crescente de mês (por exemplo, 1,2,3, etc ou 202001,202002 , 202003, etc.). Caso contrário, seus dados podem ser classificados em ordem alfabética e fornecer resultados errados quando você calcula o crescimento percentual mês a mês no MySQL.



Você pode usar uma ferramenta de relatório para plotar esses dados em um gráfico de barras ou painel e compartilhá-los com sua equipe. Aqui está um exemplo de um gráfico de barras que mostra o crescimento percentual de vendas mês a mês, criado usando o Ubiq.





Se você deseja criar gráficos, painéis e relatórios do banco de dados MySQL, experimente o Ubiq. Oferecemos um teste gratuito de 14 dias.