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

mysqlの移動平均

    クエリは、移動平均を実行する1つの方法です:

    SELECT t.*,
           (select avg(speed) from tbl tt where tt.timestamp <= t.timestamp) as avg
    FROM tbl t;
    

    別の方法は、変数を使用することです:

    select t.*, (sum_speed / cnt) as running_avg_speed
    from (select t.*, (@rn := @rn + 1) as cnt, (@s := @s + speed) as sum_speed
          from tbl t cross join
               (select @rn := 0, @s := 0) params
          order by timestamp
         ) t;
    

    tbl(timestamp)のインデックス パフォーマンスがさらに向上するはずです。



    1. ストアドプロシージャを使用せずにn回ループする

    2. ユーザー名がphp経由でmysqlテーブルに存在するかどうかを確認しますか?

    3. PL / SQLがロールによって付与された権限を尊重しないのはなぜですか?

    4. SQL Serverでは、列が参照されているすべての場所を見つけるにはどうすればよいですか?