多くの場合、MySQLで移動平均を計算する必要があります。これは単純移動平均とも呼ばれます。例:平均売上 過去5日間 。 MySQLには、移動平均を計算する関数はありません。それでは、SQLクエリを使用してMySQLの移動平均を計算する方法を見てみましょう。
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で1日あたりの平均売上を計算する方法
過去5日間の移動平均売上を計算するとします。 MySQLでSQLクエリを使用してそれを行う方法は次のとおりです。
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 | +------------+------+---------------+
上記のクエリでは、salesテーブルをそれ自体と自己結合し、order_date値ごとに、過去5日間の売上データに基づいて平均を計算します。 SQLクエリでは、内部クエリは、datediff関数を使用してa.order_dateの時間枠(5日前)ごとに収集された販売データに基づいて平均計算を行います。
ボーナスリード:赤方偏移で移動平均を計算する方法
時間枠を変更したい場合は、太字の部分を変更してください。 (0と4の間) 上記のクエリで。
ネストされたクエリのWHERE句を更新して、フィルタを追加することもできます。
上記のクエリをカスタマイズして、要件に応じてMySQLの移動平均を計算できます。
グラフ作成ツールを使用して、折れ線グラフまたはダッシュボードに移動平均をプロットすることもできます。これは、Ubiqを使用して作成された折れ線グラフの例です。
MySQLデータベースからチャート、ダッシュボード、レポートを作成したい場合は、Ubiqを試すことができます。 14日間の無料トライアルを提供しています。