sql >> データベース >  >> RDS >> Mysql

MySQLで移動平均を計算する方法

    多くの場合、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日間の無料トライアルを提供しています。

    1. MySQL DROPFOREIGNKEY制約

    2. Facebookのような通知追跡(DBデザイン)

    3. タイムスタンプが今日の日付と一致する場合、SQLiteは行を選択します

    4. Oracleストアドプロシージャから結果セットを取得する