在SQL中按分组与不同

SELECT continent, COUNT(name)
  FROM world
 WHERE population>200000000
 GROUP BY continent

当我执行以上查询时,查询运行良好。它基本上显示了每个大陆上人口超过2亿的国家数目。

但是,当我将查询修改为以下内容时:

  SELECT DISTINCT(continent), COUNT(name)
      FROM world
     WHERE population>200000000

这是行不通的。我想知道是什么原因。在这种情况下,我要说的是,每个不同的大陆都要计算人口总数超过2亿的国家总数。

我只是想了解原因,这样我才能更好地编写查询。

戈登·利诺夫

为什么这不起作用?

SELECT DISTINCT(continent), COUNT(name)
FROM world
WHERE population > 200000000;

那很简单。您有一个汇总查询,因为您COUNT()在中SELECT您没有no GROUP BY,因此中的任何其他列引用都SELECT 必须是aggregations列的参数。因此,continent产生一个错误。

您似乎还对周围的括号continent具有一定意义感到印象深刻他们不。一点也不。SQL具有一个构造,SELECT DISTINCT构造选择行的不同值

还要注意,DISTINCT聚合函数几乎从未使用过。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章