mysql平均最新5行

时间:2014-01-09 14:01:28

标签: mysql sql

我有桌子:

describe tests;

+-----------+-----------+------+-----+-------------------+-----------------------------+
| Field     | Type      | Null | Key | Default           | Extra                       |
+-----------+-----------+------+-----+-------------------+-----------------------------+
| id        | int(11)   | NO   | PRI | NULL              | auto_increment              |
| line_id   | int(11)   | NO   |     | NULL              |                             |
| test_time | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| alarm_id  | int(11)   | YES  |     | NULL              |                             |
| result    | int(11)   | NO   |     | NULL              |                             |
+-----------+-----------+------+-----+-------------------+-----------------------------+

我执行查询:

SELECT avg(result) FROM tests WHERE line_id = 4 ORDER BY test_time LIMIT 5;

我希望平均产生5个最新结果。 还是有些东西不行,因为查询会生成所有表数据的平均值。 什么可能是错的?

3 个答案:

答案 0 :(得分:1)

如果您希望最后五行,则需要按降序顺序的时间列排序:

select avg(result)
from (select result
      from tests
      where line_id = 4
      order by test_time desc
      limit 5
     ) t

答案 1 :(得分:0)

之前提交了一些链接的人

我的工作

select avg( id ) from ( select id from rand limit 5) as id;

答案 2 :(得分:0)

由于AVG功能,只会返回一个结果集。