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

Como calcular a porcentagem de crescimento semana a semana no MySQL


Monitorar o crescimento percentual semana a semana é uma maneira útil de acompanhar as tendências semanais de crescimento do seu negócio. Veja como calcular o crescimento percentual semana a semana no MySQL. Ele pode ser usado para calcular a mudança semanal no SQL para qualquer métrica.


Como calcular o crescimento percentual semana a semana no MySQL


Aqui estão as etapas para calcular o crescimento percentual semana a semana no MySQL. Digamos que você tenha uma tabela week_sales(week,sale) que contém números de vendas semanais, conforme mostrado abaixo.
mysql> create table weekly_sales(week int, sale int);

mysql> insert into weekly_sales(week,sale) 
       values(1,20),(2,30),(3,25),(4,45),(5,25);

mysql> select * from weekly_sales;
+------+------+
| week | sale |
+------+------+
|    1 |   20 |
|    2 |   30 |
|    3 |   25 |
|    4 |   45 |
|    5 |   25 |
+------+------+

Você pode calcular a porcentagem de crescimento semana a semana usando a seguinte consulta SQL para porcentagem de crescimento.


mysql> select week, 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 week, sum(sale) sale
         from   weekly_sales
         group by week) y;
+------+------+-------------+---------------------+
| week | 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 semana, armazenamos os dados da semana anterior em uma variável temporária chamada last_entry e use-o para calcular o crescimento percentual.

Bônus de leitura: Como calcular a porcentagem de duas colunas no MySQL



No entanto, na maioria dos casos, você terá dados de vendas diárias em vez de vendas semanais. Portanto, nesse caso, você precisa primeiro agregá-lo às vendas semanais e, em seguida, usar a consulta acima para calcular o crescimento percentual semana a semana.



Digamos que você tenha uma tabela de dados de vendas diárias sales(order_date, sale)
mysql>create table sales(order_date date,sale int);

mysql>insert into sales(order_date,sale)
values('2020-01-01',10),('2020-01-02',12),('2020-01-03',15),
('2020-01-04',11),('2020-01-05',13),('2020-01-06',9),
('2020-01-07',21),('2020-01-08',10),('2020-01-09',10),
('2020-01-10',2),('2020-01-11',16),('2020-01-12',12),
('2020-01-13',10),('2020-01-14',18),('2020-01-15',15),
('2020-01-16',12),('2020-01-17',10),('2020-01-18',18),
('2020-01-19',14),('2020-01-20',16),('2020-01-21',12),
('2020-01-22',21),('2020-01-23',13),('2020-01-24',15),
('2020-01-25',20),('2020-01-26',14),('2020-01-27',16),
('2020-01-28',15),('2020-01-29',10),('2020-01-30',18);

mysql>select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   10 |
| 2020-01-02 |   12 |
| 2020-01-03 |   15 |
| 2020-01-04 |   11 |
| 2020-01-05 |   13 |
| 2020-01-06 |    9 |
| 2020-01-07 |   21 |
| 2020-01-08 |   10 |
| 2020-01-09 |   10 |
| ...        |   ...|
+------------+------+

Digamos que você queira calcular o crescimento percentual semana a semana, aqui está o SQL para alteração percentual ao longo do tempo.
mysql> select week, 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 week, sum(sale) sale
            from   (select week(order_date) as week,sum(sale) as sale
                    from sales group by week(order_date)) weekly_sales
            group by week) y;
+------+------+-------------+---------------------+
| week | sale | growth rate | @last_entry := sale |
+------+------+-------------+---------------------+
|    0 |   48 |           0 |                  48 |
|    1 |   81 |       68.75 |                  81 |
|    2 |   95 |       17.28 |                  95 |
|    3 |  111 |       16.84 |                 111 |
|    4 |   73 |      -34.23 |                  73 |
+------+------+-------------+---------------------+


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

Bônus de leitura: Como calcular a porcentagem de uma coluna no MySQL



Se você deseja filtrar os dados usados ​​para sua consulta, pode adicionar uma cláusula WHERE em sua consulta, conforme mostrado abaixo
mysql> select week, 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 week, sum(sale) sale
            from   (select week(order_date) as week,sum(sale) as sale
                    from sales 
                    WHERE condition
                    group by week(order_date)) weekly_sales
            group by week) y;


Observe que, como o cálculo do crescimento percentual semana a semana depende do armazenamento do valor da linha anterior em uma variável temporária, certifique-se de que sua tabela já esteja classificada em ordem crescente de números de semanas. Caso contrário, pode dar resultados errados.

Depois de calcular o crescimento percentual semana a semana, você pode usar uma ferramenta de gráficos para traçar o resultado em um gráfico de barras e compartilhá-lo com sua equipe. Aqui está um exemplo de gráfico de barras que mostra a variação percentual ao longo do tempo, 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.