Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изчислим пълзящата средна в MySQL

Много пъти може да се наложи да изчислите плъзгащата се средна в MySQL, известна още като Simple Moving Average. Напр. средни продажби за последните 5 дни . В MySQL няма функция за изчисляване на пълзяща средна. Така че нека видим как да изчислим пълзящата средна стойност в MySQL с помощта на SQL заявка.

Как да изчислим пълзящата средна в MySQL

Ето стъпките за изчисляване на пълзящата средна стойност в MySQL. Да приемем, че имате следната таблица, която съдържа данни за ежедневните продажби

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

Бонус за четене: Как да изчислим средните продажби на ден в MySQL

Да приемем, че искате да изчислите продажбите на пълзящата средна стойност за последните 5 дни. Ето как можете да го направите, като използвате SQL заявка в 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 |
+------------+------+---------------+

В горната заявка ние правим самостоятелно свързване на нашата таблица за продажби със себе си и за всяка стойност на order_date изчисляваме средната стойност въз основа на данни за продажбите за предходните 5 дни. В нашата SQL заявка вътрешната заявка прави средното изчисление въз основа на данните за продажбите, събрани за всеки времеви прозорец на a.order_date (предхождащи 5 дни), използвайки функцията datediff.

Бонус четене: Как да се изчисли пълзящата средна в червено отместване

Ако искате да промените времевия си прозорец, просто променете частта в удебелен (МЕЖДУ 0 и 4) в горната заявка.

Можете също да добавите още филтри, като актуализирате клаузата WHERE във вложената заявка.

Можете да персонализирате горната заявка, за да изчислите плъзгащата се средна стойност в MySQL, според вашите изисквания.

Можете също да използвате инструмент за диаграми, за да начертаете плъзгаща се средна на линейна диаграма или табло. Ето пример за линейна диаграма, създадена с Ubiq.

Ако искате да създавате диаграми, табла за управление и отчети от MySQL база данни, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Изберете произволен запис, но тегло към определени записи

  2. Промяна на началния номер за автоматично увеличение?

  3. WEEKOFYEAR() Примери – MySQL

  4. Клъстерни ресурси на Galera

  5. MIN() – Намерете минималната стойност в колона в MySQL