拥有和分组

时间:2018-10-21 12:08:54

标签: sql group-by having

我要解决的问题如下

  

为每个大洲显示该大洲以及人口至少为1000万的国家/地区

世界表如下:

 World (name, continent, area, population, gdp)

我的查询(未返回正确的结果):

SELECT continent, COUNT(name)
FROM world
GROUP BY continent
HAVING sum(population) >= 10000000

查询返回正确的结果:

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

有人可以告诉我为什么我的查询错误吗?

1 个答案:

答案 0 :(得分:4)

问题是关于国家,而不是大洲,因此您需要在汇总之前进行过滤。

您查询的版本正在回答:

  

大陆上有多少个国家的人口超过1000万?

问题是:

  

每个大陆有多少国家的人口超过1000万?

这些是不同的问题。我还意识到,对于那些不流利的英语使用者,初读时可能看不出明显的区别。