0

对于每个地区,显示人口至少为 1000 万的地区和国家的数量。

该表称为 bbc 并具有以下字段:

  • 名称(指国家名称)
  • 地区(指世界地区)
  • 面积(以英里为单位的面积)
  • 人口(说国家有多少人)
  • 国内生产总值(国内生产总值)

我在想我可以做类似的事情:

 SELECT region, COUNT(name) FROM bbc 
 GROUP BY region 
 HAVING population > 10000000
4

2 回答 2

2

如果要显示所有区域,并在每个区域内计算人口超过 1000 万的数字,那么这可能是最简单的:

SELECT region, SUM(CASE WHEN population > 10000000 THEN 1 ELSE 0 END) as BigCountries
FROM bbc
GROUP BY region

因此,如果您有一个地区,其中任何国家/地区的人口均不超过 10000000,那么您仍然会有一行包含该地区名称和 0。


从您对@Yograj Gupta 问题的评论 - 如果您想要所有国家/地区人口> 10000000 的地区,那么您可以修改上述内容:

SELECT region, COUNT(*) as Cnt,SUM(CASE WHEN population > 10000000 THEN 1 ELSE 0 END) as BigCountries
FROM bbc
GROUP BY region
HAVING COUNT(*) = SUM(CASE WHEN population > 10000000 THEN 1 ELSE 0 END)

或者只是利用一个更简单的属性:

SELECT region, COUNT(*) as Cnt,MIN(population) as LowestPop
FROM bbc
GROUP BY region
HAVING MIN(population) > 10000000

如果该地区任何国家的最小人口> 10000000,则所有国家的人口必须> 10000000

于 2012-10-23T06:33:58.103 回答
1

你应该使用

-- For getting count of country name which has population > 10000000
SELECT region, COUNT(name) FROM bbc
WHERE population > 10000000
GROUP BY region

或者

-- For getting region which has SUM(population) > 10000000
SELECT region, COUNT(name) FROM bbc 
GROUP BY region 
HAVING SUM(population) > 10000000
于 2012-10-23T06:31:06.730 回答