2011-09-28 73 views
1

如果我有一个包含两列的表 - value和time_stamp - 如何使用SQL来获取最后X值的平均值?如何获得最后X值的平均值?

一个或几个声明,没关系。

也许类似于SELECT value FROM table ORDER BY time_stamp DESC LIMIT x?然后在我的程序中,我可以得到每个值,总计它们并平均它们?就我的SQL n00b而言,这是我最好的猜测。

我知道SQL可以合计/平均水平,但我不确定如何在结合了将其应用到最新的X值的请求......

预先感谢任何帮助。


注给任何人seekign做到这一点:除了最后的X值接受的答案,我也通过google搜索,很容易的时间做,例如一分钟或一小时找到,通过使用类似的东西SELECT AVG(somefield) FROM sometable WHERE datefield BETWEEN '2003-08-10' AND '2003-08-26

回答

3

您使用AVG()聚合对子选择的结果进行初始化LIMIT。请确保在内部查询上替换n的正确LIMIT值。

SELECT AVG(a.value) AS the_average 
FROM (SELECT value FROM tbl ORDER BY time_stamp DESC LIMIT n) a; 
+1

+1(以及6分钟内答案,当我可以奖励它)。谢谢! – Mawg

+0

errm,我只注意到最后的'a' - 它在做什么? – Mawg

+1

@Mawg子查询派生表必须有一个别名。 'a'只是一个简单的别名来满足这个要求 - 如果没有它,查询就不会编译。 –