Wiele razy może być konieczne obliczenie średniej ruchomej w MySQL, znanej również jako prosta średnia ruchoma. Np. średnia sprzedaż za ostatnie 5 dni . W MySQL nie ma funkcji obliczania średniej ruchomej. Zobaczmy więc, jak obliczyć średnią ruchomą w MySQL za pomocą zapytania SQL.
Jak obliczyć średnią kroczącą w MySQL
Oto kroki, aby obliczyć średnią ruchomą w MySQL. Załóżmy, że masz poniższą tabelę zawierającą dzienne dane sprzedaży
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 | +------------+------+
Przeczytaj bonus: Jak obliczyć średnią dzienną sprzedaż w MySQL
Załóżmy, że chcesz obliczyć średnią ruchomą sprzedaży z ostatnich 5 dni. Oto jak możesz to zrobić za pomocą zapytania SQL w 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 | +------------+------+---------------+
W powyższym zapytaniu wykonujemy samodzielne łączenie naszej tabeli sprzedaży ze sobą i dla każdej wartości data_zamówienia wyliczamy średnią na podstawie danych sprzedażowych za jej poprzednie 5 dni. W naszym zapytaniu SQL wewnętrzne zapytanie wykonuje średnią kalkulację na podstawie danych sprzedaży zebranych dla każdego okna czasowego a.order_date (poprzedzające 5 dni) przy użyciu funkcji datediff.
Przeczytaj dodatkowe: Jak obliczyć średnią kroczącą w przesunięciu ku czerwieni
Jeśli chcesz zmienić okno czasowe, po prostu zmień część pogrubioną (POMIĘDZY 0 a 4) w powyższym zapytaniu.
Możesz również dodać więcej filtrów, aktualizując klauzulę WHERE w zagnieżdżonym zapytaniu.
Możesz dostosować powyższe zapytanie, aby obliczyć średnią ruchomą w MySQL, zgodnie ze swoimi wymaganiami.
Możesz także użyć narzędzia do tworzenia wykresów, aby wykreślić średnią ruchomą na wykresie liniowym lub pulpicie nawigacyjnym. Oto przykład wykresu liniowego utworzonego za pomocą Ubiq.
Jeśli chcesz tworzyć wykresy, dashboardy i raporty z bazy danych MySQL, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.