2014-11-08 79 views
0

下面的查询似乎行为不正确。在单个字段上分组并且该字段上的平均值不同的平均值应该可以为每个不同的平均值返回一行。如果将avg替换为count,例如查询将返回两行,并且如果distinct被删除或全部替换,则查询返回三行。MySQL似乎有一个独特的,平均和组的错误

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 
+0

你需要什么实际上是具有相同的O/P – 2014-11-08 06:38:13

+0

我测试的原因或解决方案我的rdbms针对MySQL和此查询打破我的随机查询生成器。 – 2014-11-08 06:47:28

+0

这意味着你想输出像postgress我对 – 2014-11-08 06:48:54

回答

0

下面的查询返回的输出:

AVG 
----- 
    1 
    2 
    3 

查询

SELECT AVG(x) FROM x 
GROUP BY x; 

这里是SQL小提琴

Demo

+0

谢谢! ------- – 2014-11-08 07:00:18

+0

我的荣幸@WayneHong – 2014-11-08 07:00:46

0

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

SELECT AVG(distinct x)