这个查询
SELECT *
FROM `rounds`
WHERE `user` = 18956 AND `handicapDifferential` IS NOT NULL
ORDER BY `handicapDifferential` DESC, `date` DESC
LIMIT 0, 2
在 handicapDifferential 中给出具有 -1.4
和 -5.1
的两行的预期结果。字段数据类型为 FLOAT。
在此查询的相同结果上使用 AVG()
SELECT AVG(`handicapDifferential`) as `avg`
FROM `rounds`
WHERE `user` = 18956 AND `handicapDifferential` IS NOT NULL
ORDER BY `handicapDifferential` DESC, `date` DESC
LIMIT 0, 2
在我期望的 -3.25
处给出 -9.485714214188713
。
这是一个演示结果和问题的 fiddle :http://sqlfiddle.com/#!9/32acd/3
我在这里做错了什么?
最佳答案
将您的查询更改为
SELECT
AVG(items.avg)
FROM
(SELECT
`handicapDifferential` AS `avg`
FROM
`rounds`
WHERE `user` = 18956
AND `handicapDifferential` IS NOT NULL
ORDER BY `handicapDifferential` DESC,
`date` DESC
LIMIT 0, 2) items
引用link
解释:AVG 是 MySQL 中的一个聚合关键字,您应该根据您的要求给出一个结果集作为输入。但是您在查询中将 AVG 称为成员。
关于mysql - 在 mySQL 中对负 float 使用 AVG() 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47271919/