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

Como calcular a média móvel no MySQL


Muitas vezes você pode precisar calcular a média móvel no MySQL, também conhecida como Média Móvel Simples. Por exemplo, vendas médias nos últimos 5 dias . No MySQL, não há função para calcular a média móvel. Então vamos ver como calcular a média móvel no MySQL usando a consulta SQL.


Como calcular a média móvel no MySQL


Aqui estão os passos para calcular a média móvel no MySQL. Digamos que você tenha a seguinte tabela 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),('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 |
+------------+------+


Bônus de leitura: Como calcular a média de vendas por dia no MySQL

Digamos que você queira calcular as vendas médias móveis dos últimos 5 dias. Veja como você pode fazer isso usando a consulta SQL no 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 |
+------------+------+---------------+


Na consulta acima, fazemos uma autojunção de nossa tabela de vendas com ela mesma e, para cada valor order_date, calculamos a média com base nos dados de vendas dos 5 dias anteriores. Em nossa consulta SQL, a consulta interna faz o cálculo médio, com base nos dados de vendas coletados para cada janela de tempo de a.order_date (anterior a 5 dias) usando a função datediff.

Bônus de leitura: Como calcular a média móvel no Redshift

Se você quiser alterar sua janela de tempo, basta alterar a parte em negrito (ENTRE 0 e 4) na consulta acima.

Você também pode adicionar mais filtros atualizando a cláusula WHERE na consulta aninhada.

Você pode personalizar a consulta acima para calcular a média móvel no MySQL, conforme suas necessidades.

Você também pode usar uma ferramenta de gráficos para traçar a média móvel em um gráfico de linhas ou painel. Aqui está um exemplo de um gráfico de linhas criado usando o 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.