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

Como calcular o total acumulado no MySQL


Muitas vezes você pode precisar calcular o total acumulado ou o total acumulado para uma coluna específica, como vendas. Como não há função para calcular o total cumulativo no MySQL, você precisa realizá-lo via consulta SQL. Aqui está uma consulta SQL para calcular o total cumulativo no MySQL.


Como calcular o total acumulado no MySQL


Veja como calcular o total cumulativo no MySQL. Digamos que você tenha a tabela a seguir que contém dados de vendas diárias.
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 você queira calcular a soma cumulativa de vendas, assim,
+------------+------+-----------------+
| 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 |
+------------+------+-----------------+

Aqui está a consulta SQL para calcular a soma cumulativa no 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 |
+------------+------+-----------------+

Bônus de leitura: Como criar uma tabela dinâmica no MySQL

Na consulta acima, definimos uma variável temporária csum como 0. Então, para cada linha, a usamos para calcular e armazenar a soma cumulativa.

Observe que essa soma cumulativa não é armazenada em nenhuma coluna. Ele é simplesmente exibido no resultado.

Se você quiser armazenar esse valor, precisará adicionar uma nova coluna à sua tabela e usar a cláusula UPDATE conforme mostrado abaixo.


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

Você pode personalizar sua consulta SQL para incluir filtros usando a cláusula WHERE ou JOINS, conforme mostrado abaixo
mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales where <condition>
       order by order_date;


Bônus de leitura: Como calcular a mediana no MySQL

Como o MySQL não oferece função integrada para soma cumulativa, você pode usar a consulta SQL acima para calcular o total cumulativo no MySQL.

Depois de calcular o total cumulativo no MySQL, você pode usar uma ferramenta de gráficos facilmente plotá-los como um gráfico de linhas ou gráfico de barras, conforme mostrado abaixo. Aqui está um exemplo de um gráfico criado usando 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.