使用同一表中的数据更新表(移动平均值)

时间:2013-12-06 05:33:43

标签: mysql sql moving-average

我正在尝试查找更新表的查询,以便它有一个具有移动平均值的列。

Table: 
person_ID
test_date
test_results
test_MA_3

Unique(person_ID, test_date)

目前,对于test_MA_3列(移动平均线,为期3天),所有行的值均为0

移动平均线:它就像一个低通滤波器,对于所有位置,移动平均线是(在我的情况下)3个最后几天的平均值。

所以2013-03-12的移动平均线是:

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

(代码是pseude代码)

我尝试使用我无法使用的子查询来解决它,即使使用干净的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 

AS

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

有谁可以帮我解决这个问题?

1 个答案:

答案 0 :(得分:0)

试试这个:

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 
相关问题