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

Cómo calcular el total acumulativo en MySQL

Muchas veces es posible que deba calcular el total acumulado o el total acumulativo para una columna específica, como las ventas. Dado que no existe una función para calcular el total acumulativo en MySQL, debe lograrlo a través de una consulta SQL. Aquí hay una consulta SQL para calcular el total acumulativo en MySQL.

Cómo calcular el total acumulativo en MySQL

Aquí se explica cómo calcular el total acumulativo en MySQL. Supongamos que tiene la siguiente tabla que contiene datos 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-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 la suma acumulada de ventas, 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 |
+------------+------+-----------------+

Aquí está la consulta SQL para calcular la suma acumulada 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 |
+------------+------+-----------------+

Lectura adicional: Cómo crear una tabla dinámica en MySQL

En la consulta anterior, establecemos una variable temporal csum en 0. Luego, para cada fila, la usamos para calcular y almacenar la suma acumulativa.

Tenga en cuenta que esta suma acumulativa no se almacena en ninguna columna. Simplemente se muestra en el resultado.

Si desea almacenar este valor, debe agregar una nueva columna a su tabla y usar la cláusula UPDATE como se muestra a continuación.

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

Puede personalizar su consulta SQL para incluir filtros usando la cláusula WHERE o JOINS, como se muestra a continuación

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales where <condition>
       order by order_date;

Lectura adicional: Cómo calcular la mediana en MySQL

Dado que MySQL no ofrece una función integrada para la suma acumulativa, puede usar la consulta SQL anterior para calcular el total acumulativo en MySQL.

Después de que pueda calcular el total acumulativo en MySQL, puede usar una herramienta de gráficos para trazarlos fácilmente como un gráfico de líneas o un gráfico de barras, como se muestra a continuación. Este es un ejemplo de un gráfico 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.