对于每个地区,显示人口至少为 1000 万的地区和国家的数量。
该表称为 bbc 并具有以下字段:
- 名称(指国家名称)
- 地区(指世界地区)
- 面积(以英里为单位的面积)
- 人口(说国家有多少人)
- 国内生产总值(国内生产总值)
我在想我可以做类似的事情:
SELECT region, COUNT(name) FROM bbc
GROUP BY region
HAVING population > 10000000
如果要显示所有区域,并在每个区域内计算人口超过 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
你应该使用
-- 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