>>>> 2012/07/16 14:25 -0700, Rick James >>>>
Here's a different way to "smooth" numbers.  It uses an exponential moving 
average instead of "the last 5".

SELECT Time,
       @a := (9 * @a + Value) / 10  AS moving_avg
FROM tbl
JOIN ( SELECT @a := 0 ) AS x;

Notes:
*  Make 10 larger or smaller, depending on how smooth you want it.
*  9=10-1
*  @a := 0 should be changed to some reasonable starting value, else the graph 
will be artificially low to start with.
<<<<<<<<
Hunh, MySQL: to use the optimizer s order for an initial value never would have 
occurred to me.

The important thing in using decaying average (I so know it) is this:
@a := (B * @a + C * Value) / (B + C) and B, C > 0. The bigger B is the more 
important the past; therefore, the change is smaller and the graph is smoother. 
The smaller B is the less important the initial value is.


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to