mysql - 在 mySQL 中对负 float 使用 AVG() 的意外结果

标签 mysql average mean

这个查询

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/

相关文章:

MYSQL 数据库位置 Windows 10 PC

mysql - 缓存 MySQL UNION 查询

php - 新值未从更新/插入表单插入到表中

c - float 结果不正确

java - "org.apache.derby.client.ClientBlob@518bb3a1"而不是显示在数据库中的 Jtable 上的图像

r - 求子集的均值

java - 如何计算最小值、最大值、总和和平均值

python - Pandas - 计算场的平均值并乘以出现次数

python - 根据到平均值的距离对二维数组进行排序

Pandas - 延长平均 session 时间