【问题标题】:HAVING and GROUP BYHAVING 和 GROUP BY
【发布时间】:2018-10-21 12:08:54
【问题描述】:

我要解决的问题如下

对于每个大洲,显示人口至少为 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

谁能告诉我为什么我的查询是错误的?

【问题讨论】:

  • 问题是关于国家,而不是大陆,所以你需要在聚合之前进行过滤。

标签: sql group-by having


【解决方案1】:

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

您的查询版本正在回答:

人口超过 10,000,000 的大陆上有多少个国家?

问题是:

每个大陆有多少个国家的人口超过 10,000,000?

这些是不同的问题。我也意识到,对于英语不流利的人来说,初读时差异可能并不明显。

【讨论】:

  • 当我删除HAVING sum(population) >= 10000000并执行查询的结果与保留HAVING sum(population) >= 10000000并执行的结果相同。是否暗示HAVING sum(population) >= 10000000没有效果
  • 这只是意味着所有大陆(有国家)的人口至少为 10,000,000。
  • 我的英语似乎很糟糕。不过还是谢谢你的耐心:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多