sql >> Base de Datos >  >> RDS >> Mysql

Cómo calcular el porcentaje de crecimiento mes a mes en MySQL

El crecimiento mes a mes es un indicador clave de rendimiento para todas las empresas. Dado que no hay una función para calcular el crecimiento porcentual mes a mes en MySQL, debe escribir una consulta SQL para calcular el cambio mes a mes. Entonces, veamos cómo calcular el crecimiento porcentual mes a mes en MySQL. También puede usarlo para monitorear mes a mes el cambio porcentual a lo largo del tiempo en su negocio.

Cómo calcular el porcentaje de crecimiento mes a mes en MySQL

Supongamos que tiene una tabla de datos ventas_mes(mes,venta) que contiene las ventas mensuales, como se muestra a continuación.

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 |
+-------+------+

Puede calcular el porcentaje de crecimiento mes a mes usando el siguiente SQL.

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 |
+-------+------+-------------+---------------------+

En la consulta anterior, para cada fila (mes), almacenamos la venta del mes anterior en una variable temporal last_entry

Sin embargo, en la mayoría de los casos, tendrá datos de ventas diarios. En ese caso, primero debe agregarlo a las ventas mensuales y luego calcular la tasa de crecimiento porcentual mes a mes. Supongamos que tiene una tabla de datos sales(created_at, sale) que contiene información de ventas diarias.

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 desea calcular la tasa de crecimiento mensual, aquí está la consulta SQL para ello.

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 |
+-------+------+-------------+---------------------+   

En la consulta anterior, primero agregamos las ventas diarias en valores mensuales (mostrado en negrita ) y luego use la consulta anterior para calcular el porcentaje de crecimiento.

Lectura adicional: Cómo calcular el promedio de ventas por día en MySQL

Si desea filtrar sus datos antes de calcular el porcentaje de crecimiento mes a mes, puede hacerlo agregando la cláusula WHERE a su consulta como se muestra a continuación

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;

Lectura adicional: ¿Cómo calcular las ventas totales por mes en MySQL?

Tenga en cuenta :Dado que el cálculo del porcentaje de crecimiento mes a mes se basa en el concepto de almacenar el valor de la fila anterior en una variable temporal, asegúrese de que su tabla esté ordenada en orden ascendente de mes (por ejemplo, 1,2,3, etc. o 202001,202002 ,202003, etc). De lo contrario, sus datos podrían ordenarse alfabéticamente y arrojar resultados erróneos cuando calcula el porcentaje de crecimiento mes a mes en MySQL.

Puede usar una herramienta de informes para trazar estos datos en un gráfico de barras o un tablero y compartirlos con su equipo. Este es un ejemplo de un gráfico de barras que muestra el porcentaje de crecimiento de las ventas mes a mes, creado con Ubiq.

Si desea crear gráficos, paneles e informes desde la base de datos MySQL, puede probar Ubiq. Ofrecemos una prueba gratuita de 14 días.