【问题标题】:MySQL seems to have a bug with distinct, avg, and group-byMySQL 似乎有一个具有 distinct、avg 和 group-by 的错误
【发布时间】:2014-11-08 06:17:44
【问题描述】:

以下查询的行为似乎不正确。对于单个字段的 group by 和该字段的平均值,不同的 avg 可能应该为每个不同的平均值返回一行。例如,如果 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

【问题讨论】:

  • 你究竟需要什么O/P相同的原因或解决方案
  • 我正在针对 mysql 测试我的 rdbms,这个查询破坏了我的随机查询生成器。
  • 这意味着你想要像 postgress 这样的输出,我是对的

标签: mysql sql rdbms


【解决方案1】:

下面的查询返回这个输出:

 AVG
-----
   1
   2
   3

查询

SELECT  AVG(x) FROM x 
GROUP BY x;

这是 SQL 小提琴

Demo

【讨论】:

  • 我的荣幸@WayneHong
【解决方案2】:

我认为您的选择语句需要:

SELECT AVG(distinct x)

【讨论】:

    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    相关资源
    最近更新 更多