我正在尝试查找更新表的查询,以便它有一个具有移动平均值的列。
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可用。但我尝试了上面的查询的多个版本,没有任何成功。
有谁可以帮我解决这个问题?
答案 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