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

Cómo calcular la media móvil en MySQL

Muchas veces es posible que necesite calcular el promedio móvil en MySQL, también conocido como promedio móvil simple. Por ejemplo, ventas promedio durante los últimos 5 días . En MySQL, no hay una función para calcular el promedio móvil. Entonces, veamos cómo calcular el promedio móvil en MySQL usando una consulta SQL.

Cómo calcular la media móvil en MySQL

Estos son los pasos para calcular el promedio móvil 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),('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 |
+------------+------+

Lectura adicional: Cómo calcular el promedio de ventas por día en MySQL

Supongamos que desea calcular el promedio móvil de ventas de los últimos 5 días. Aquí le mostramos cómo puede hacerlo usando una consulta SQL en 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 |
+------------+------+---------------+

En la consulta anterior, hacemos una autounión de nuestra tabla de ventas consigo misma, y ​​para cada valor de order_date, calculamos el promedio en función de los datos de ventas de los 5 días anteriores. En nuestra consulta SQL, la consulta interna realiza el cálculo promedio, en función de los datos de ventas recopilados para cada ventana de tiempo de a.order_date (anterior a 5 días) utilizando la función dateiff.

Lectura adicional: Cómo calcular la media móvil en corrimiento al rojo

Si desea cambiar su ventana de tiempo, simplemente cambie la parte en negrita (ENTRE 0 y 4) en la consulta anterior.

También puede agregar más filtros actualizando la cláusula WHERE en la consulta anidada.

Puede personalizar la consulta anterior para calcular el promedio móvil en MySQL, según sus requisitos.

También puede usar una herramienta de gráficos para trazar un promedio móvil en un gráfico de líneas o un tablero. Este es un ejemplo de un gráfico de líneas 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.