Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment calculer le total cumulé dans MySQL

Plusieurs fois, vous devrez peut-être calculer le total cumulé ou le total cumulé pour une colonne spécifique, telle que les ventes. Puisqu'il n'y a pas de fonction pour calculer le total cumulé dans MySQL, vous devez l'accomplir via une requête SQL. Voici une requête SQL pour calculer le total cumulé dans MySQL.

Comment calculer le total cumulé dans MySQL

Voici comment calculer le total cumulé dans MySQL. Supposons que vous disposiez du tableau suivant contenant des données sur les ventes quotidiennes.

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

Supposons que vous souhaitiez calculer la somme cumulée des ventes, comme ceci,

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

Voici la requête SQL pour calculer la somme cumulée dans 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 |
+------------+------+-----------------+

Lecture bonus : Comment créer un tableau croisé dynamique dans MySQL

Dans la requête ci-dessus, nous définissons une variable temporaire csum sur 0. Ensuite, pour chaque ligne, nous l'utilisons pour calculer et stocker la somme cumulée.

Veuillez noter que cette somme cumulée n'est stockée dans aucune colonne. Il est simplement affiché en résultat.

Si vous souhaitez stocker cette valeur, vous devez ajouter une nouvelle colonne à votre table et utiliser la clause UPDATE comme indiqué ci-dessous.

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

Vous pouvez personnaliser votre requête SQL pour inclure des filtres à l'aide de la clause WHERE ou JOINS, comme indiqué ci-dessous

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

Lecture bonus : Comment calculer la médiane dans MySQL

Étant donné que MySQL n'offre pas de fonction intégrée pour la somme cumulée, vous pouvez utiliser la requête SQL ci-dessus pour calculer le total cumulé dans MySQL.

Une fois que vous avez pu calculer le total cumulé dans MySQL, vous pouvez utiliser un outil graphique pour les tracer facilement sous forme de graphique linéaire ou de graphique à barres, comme indiqué ci-dessous. Voici un exemple de graphique créé avec Ubiq.

Si vous souhaitez créer des graphiques, des tableaux de bord et des rapports à partir de la base de données MySQL, vous pouvez essayer Ubiq. Nous offrons un essai gratuit de 14 jours.