Mysql 使用来自同一表的数据更新表(移动平均)

Mysql 使用来自同一表的数据更新表(移动平均),mysql,sql,moving-average,Mysql,Sql,Moving Average,我试图找到用于更新表的查询,以便它有一个具有移动平均值的列 Table: person_ID test_date test_results test_MA_3 Unique(person_ID, test_date) 当前,列test_MA_3移动平均值的所有行的值为0,持续3天 移动平均值:它就像一个低通滤波器,对于所有位置,移动平均值是我的案例中最后三天的平均值 因此,får date 2013-03-12移动平均线为: SUM(test_results)/COUNT(test_dat

我试图找到用于更新表的查询,以便它有一个具有移动平均值的列

Table: 
person_ID
test_date
test_results
test_MA_3

Unique(person_ID, test_date)
当前,列test_MA_3移动平均值的所有行的值为0,持续3天

移动平均值:它就像一个低通滤波器,对于所有位置,移动平均值是我的案例中最后三天的平均值

因此,får date 2013-03-12移动平均线为:

SUM(test_results)/COUNT(test_date) For test_date = (2013-03-12, + 2 previous days) GROUP BY person_ID
代码是伪代码

我尝试使用一个我无法使用的子查询来解决它,即使使用一个干净的SELECT查询,我也无法计算移动平均值

我试过:

SELECT a.test_date, a.person_ID, 
        (SELECT SUM(b.test_results)/COUNT(b.test_date) AS results 
         FROM table AS b WHERE b.person_ID = a.person_ID AND b.test_date <= a.test_date 
         ORDER BY b.test_date DESC LIMIT 3 
         GROUP BY b.person_ID
        ) AS out
FROM table 
作为

我可能在上面的查询中有一些错误,因为我现在没有可用的phpmyadmin。但我尝试了上述查询的多个版本,但都没有成功

有人能帮我解决这个问题吗

试试这个:

SELECT a.test_date, a.person_ID, 
        (SELECT SUM(b.test_results)/COUNT(b.test_date) AS results 
         FROM table AS b WHERE b.person_ID = a.person_ID AND b.test_date <= a.test_date 
         GROUP BY b.person_ID
        ) AS out
FROM table 

该查询返回以前所有日期的平均值。现在,我需要按date DESC对子查询的输出进行排序,并在分组之前将行数限制为3。怎样