我有桌子:
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个最新结果。 还是有些东西不行,因为查询会生成所有表数据的平均值。 什么可能是错的?
答案 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功能,只会返回一个结果集。