SQL-如何仅使用最后N行中的值来查找列的平均值

时间:2015-05-20 11:38:53

标签: mysql sql average

我有一个看起来像这样的数据表。

datestamp   timestamp   vix    
2015-05-13   16:30:00   18.0     
2015-05-14   16:30:00   19.2
2015-05-15   16:30:00   18.5
2015-05-18   16:30:00   17.5
2015-05-19   16:30:00   17.0

我想获得最近3天的列vix的平均值(avg())。我知道如何使用像这样的查询来获取最后3行

select vix from my_table order by date desc limit 3

如何进一步计算过去3天的平均值?任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:5)

使用派生表:

select avg(dt.vix)
from
(select vix from my_table order by date desc limit 3) dt

答案 1 :(得分:1)

这取决于您是否需要最近3天或最后3条记录..

严格过去三天:

SELECT AVG(t.vix)
  FROM table t
 WHERE t.datestamp > CURDATE() - INTERVAL 3 DAY

是优选的,否则请转到Jarlh的回答