MySQL似乎有一个与distinct,avg和group-by有关的bug

时间:2014-11-08 06:17:44

标签: mysql sql rdbms

以下查询似乎行为不正确。对于单个字段上的分组和该字段上的平均值,不同的平均值应该为每个不同的平均值返回一行。如果avg被count替换,例如查询将返回两行,如果distinct被删除或被all替换,则查询返回三行。

CREATE TABLE x (x real);
INSERT INTO x VALUES (1), (2), (3), (3);
SELECT DISTINCT AVG(x) FROM x GROUP BY x;

MySQL返回:

+--------+
| AVG(x) |
+--------+
|      1 |
+--------+

PostGres回归:

 AVG
-----
   1
   2
   3

2 个答案:

答案 0 :(得分:0)

我相信你的select语句必须是:

SELECT AVG(distinct x)

答案 1 :(得分:0)

以下查询返回此输出:

 AVG
-----
   1
   2
   3

<强>查询

SELECT  AVG(x) FROM x 
GROUP BY x;

这是SQL小提琴

Demo