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

Comment calculer la moyenne mobile dans MySQL

Plusieurs fois, vous devrez peut-être calculer la moyenne mobile dans MySQL, également connue sous le nom de moyenne mobile simple. Par exemple, les ventes moyennes depuis 5 jours . Dans MySQL, il n'y a pas de fonction pour calculer la moyenne mobile. Voyons donc comment calculer la moyenne mobile dans MySQL à l'aide d'une requête SQL.

Comment calculer la moyenne mobile dans MySQL

Voici les étapes pour calculer la moyenne mobile 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),('2020-01-10',20),('2020-01-06',25),
('2020-01-07',15),('2020-01-08',30),('2020-01-09',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 |
| 2020-01-10 |   20 |
| 2020-01-06 |   25 |
| 2020-01-07 |   15 |
| 2020-01-08 |   30 |
| 2020-01-09 |   20 |
+------------+------+

Lecture bonus : Comment calculer les ventes moyennes par jour dans MySQL

Supposons que vous souhaitiez calculer la moyenne mobile des ventes des 5 derniers jours. Voici comment vous pouvez le faire en utilisant une requête SQL dans MySQL.

mysql> SELECT
       a.order_date,
       a.sale,
       Round( ( SELECT SUM(b.sale) / COUNT(b.sale)
                FROM sales AS b
                WHERE DATEDIFF(a.order_date, b.order_date) BETWEEN 0 AND 4
              ), 2 ) AS '5dayMovingAvg'
     FROM sales AS a
     ORDER BY a.order_date;
+------------+------+---------------+
| order_date | sale | 5dayMovingAvg |
+------------+------+---------------+
| 2020-01-01 |   20 |         20.00 |
| 2020-01-02 |   25 |         22.50 |
| 2020-01-03 |   15 |         20.00 |
| 2020-01-04 |   30 |         22.50 |
| 2020-01-05 |   20 |         22.00 |
| 2020-01-06 |   25 |         23.00 |
| 2020-01-07 |   15 |         21.00 |
| 2020-01-08 |   30 |         24.00 |
| 2020-01-09 |   20 |         22.00 |
| 2020-01-10 |   20 |         22.00 |
+------------+------+---------------+

Dans la requête ci-dessus, nous effectuons une auto-jointure de notre table sales avec elle-même, et pour chaque valeur order_date, nous calculons la moyenne basée sur les données de ventes des 5 jours précédents. Dans notre requête SQL, la requête interne effectue le calcul de la moyenne, sur la base des données de vente collectées pour chaque fenêtre temporelle de a.order_date (5 jours précédents) à l'aide de la fonction datediff.

Lecture bonus : Comment calculer la moyenne mobile dans Redshift

Si vous souhaitez modifier votre fenêtre horaire, modifiez simplement la partie en gras (ENTRE 0 et 4) dans la requête ci-dessus.

Vous pouvez également ajouter plus de filtres en mettant à jour la clause WHERE dans la requête imbriquée.

Vous pouvez personnaliser la requête ci-dessus pour calculer la moyenne mobile dans MySQL, selon vos besoins.

Vous pouvez également utiliser un outil graphique pour tracer une moyenne mobile sur un graphique linéaire ou un tableau de bord. Voici un exemple de graphique linéaire créé à l'aide d'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.