sql >> Databáze >  >> RDS >> Mysql

průběžný průměr v mysql

Váš dotaz je jedním ze způsobů, jak udělat průběžný průměr:

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

Alternativou je použití proměnných:

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;

Index na tbl(timestamp) by měl dále zlepšit výkon.



  1. Datatyp Oracle Date, transformovaný na 'YYYY-MM-DD HH24:MI:SS TMZ' prostřednictvím SQL

  2. SqlParameter neumožňuje Název tabulky - další možnosti bez útoku sql injection?

  3. Vyberte data prostřednictvím funkce s hodnotou tabulky na serveru SQL Server

  4. Výkon REGEXP (porovnat s LIKE a =)