【发布时间】:2018-02-28 17:23:52
【问题描述】:
表:
a | b
1 | 15
2 | 10
3 | 20
4 | 30
查询:
SELECT AVG(table.b) FROM table ORDER BY table.a ASC LIMIT 3
将返回 18.75 而不是预期的 15。
如何更改查询以获得我的预期结果(AVG 有限行数的值)?
【问题讨论】:
标签: mysql sql aggregate-functions
表:
a | b
1 | 15
2 | 10
3 | 20
4 | 30
查询:
SELECT AVG(table.b) FROM table ORDER BY table.a ASC LIMIT 3
将返回 18.75 而不是预期的 15。
如何更改查询以获得我的预期结果(AVG 有限行数的值)?
【问题讨论】:
标签: mysql sql aggregate-functions
你需要使用子查询:
SELECT AVG(b)
FROM (SELECT b
FROM table
ORDER BY table.a ASC
LIMIT 3) sub
编辑:
没有子查询的执行顺序是这样的:
子查询的执行顺序是这样的:
更多信息:Logical query processing(TOP/OFFSET FETCH 与 LIMIT 相同)。
【讨论】:
【讨论】: