El seguimiento del crecimiento porcentual semana tras semana es una forma útil de realizar un seguimiento de las tendencias de crecimiento semanales de su negocio. Aquí se explica cómo calcular el porcentaje de crecimiento semana tras semana en MySQL. Se puede usar para calcular el cambio semanal en SQL para cualquier métrica.
Cómo calcular el porcentaje de crecimiento semana tras semana en MySQL
Estos son los pasos para calcular el porcentaje de crecimiento semana tras semana en MySQL. Supongamos que tiene una tabla ventas_semanales(semana,venta) que contiene números de ventas semanales, como se muestra a continuación.
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 | +------+------+
Puede calcular el porcentaje de crecimiento semana tras semana utilizando la siguiente consulta SQL para el porcentaje de crecimiento.
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 | +------+------+-------------+---------------------+
En la consulta anterior, para cada semana, almacenamos los datos de la semana anterior en una variable temporal llamada last_entry y utilícelo para calcular el porcentaje de crecimiento.
Lectura adicional: Cómo calcular el porcentaje de dos columnas en MySQL
Sin embargo, en la mayoría de los casos, tendrá datos de ventas diarias en lugar de ventas semanales. Entonces, en ese caso, primero debe agregarlo a las ventas semanales y luego usar la consulta anterior para calcular el porcentaje de crecimiento semana tras semana.
Supongamos que tiene una tabla de datos de ventas diarias 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 | | ... | ...| +------------+------+
Supongamos que desea calcular el porcentaje de crecimiento semana tras semana, aquí está el SQL para el cambio porcentual a lo largo del tiempo.
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 | +------+------+-------------+---------------------+
En la consulta anterior, primero agregamos las ventas diarias a las ventas semanales (en negrita ) y luego use la consulta anterior para calcular el porcentaje de crecimiento semana tras semana.
Lectura adicional: Cómo calcular el porcentaje de una columna en MySQL
Si desea filtrar los datos utilizados para su consulta, puede agregar una cláusula WHERE en su consulta como se muestra a continuación
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;
Tenga en cuenta que, dado que el cálculo del porcentaje de crecimiento semana tras semana depende del almacenamiento del valor de la fila anterior en una variable temporal, asegúrese de que su tabla ya esté ordenada en orden ascendente de números de semana. De lo contrario, podría dar resultados incorrectos.
Después de calcular el porcentaje de crecimiento semana tras semana, puede usar una herramienta de gráficos para trazar el resultado en un gráfico de barras y compartirlo con su equipo. Este es un ejemplo de gráfico de barras que muestra el cambio porcentual a lo largo del tiempo, 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.