MySQL no tiene una función para calcular el total acumulado, también conocido como total acumulado. Debe escribir una consulta SQL para calcular la suma acumulativa en MySQL. Entonces, veamos una consulta SQL para calcular el total acumulado en MySQL.
Cómo calcular el total acumulado en MySQL
Aquí se explica cómo calcular el total acumulado en MySQL. Supongamos que tiene la siguiente tabla que contiene las 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-01-05',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-01-05 | 20 | +------------+------+
Digamos que desea calcular el total acumulado para esta tabla, así.
+------------+------+-----------------+ | order_date | sale | cumulative_sale | +------------+------+-----------------+ | 2020-01-01 | 20 | 20 | | 2020-01-02 | 25 | 45 | | 2020-01-03 | 15 | 60 | | 2020-01-04 | 30 | 90 | | 2020-01-05 | 20 | 110 | +------------+------+-----------------+
Lectura adicional: Cómo concatenar varias filas en un campo en MySQL
Aquí está la consulta SQL para calcular el total acumulado en MySQL.
mysql> set @csum := 0; mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale from sales order by order_date; +------------+------+-----------------+ | order_date | sale | cumulative_sale | +------------+------+-----------------+ | 2020-01-01 | 20 | 20 | | 2020-01-02 | 25 | 45 | | 2020-01-03 | 15 | 60 | | 2020-01-04 | 30 | 90 | | 2020-01-05 | 20 | 110 | +------------+------+-----------------+
En la consulta anterior, primero establecemos una variable definida por el usuario csum en 0. Luego la usamos para almacenar el total acumulado de cada fila. Es importante tener en cuenta que csum no se almacena en ninguna tabla. Simplemente se usa para mostrar los valores totales acumulados.
Si desea almacenar este total acumulado, puede agregar una nueva columna a su tabla y usar la cláusula UPDATE para almacenar los valores totales acumulados.
mysql> alter table sales add column cumulative_sum int; mysql> set @csum := 0; mysql> update sales set cumulative_sum = (@csum := @csum + sale) order by order_date; mysql> select order_date,sale,cumulative_sum from sales; +------------+------+----------------+ | order_date | sale | cumulative_sum | +------------+------+----------------+ | 2020-01-01 | 20 | 20 | | 2020-01-02 | 25 | 45 | | 2020-01-03 | 15 | 60 | | 2020-01-04 | 30 | 90 | | 2020-01-05 | 20 | 110 | +------------+------+----------------+
Lectura adicional: Cómo agregar una fila total en MySQL
También puede personalizar su consulta SQL usando la cláusula WHERE o JOINS, como se muestra,
mysql> set @csum := 0; mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale from sales where <condition> order by order_date;
Dado que MySQL no ofrece ninguna función integrada para el total acumulado, puede usar la consulta SQL anterior para el total acumulado en MySQL. También puede usar MONTH(order_date) en lugar de order_date arriba si desea escribir SQL para la suma acumulada por mes.
Una vez que calcule el total acumulado, puede usar una herramienta de gráficos para trazar estos datos en un gráfico de líneas y compartirlo con su equipo. Este es un ejemplo de un gráfico de líneas que muestra el total acumulado, 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.