SQL世界数据库;寻找至少五个拥有超过一千万人口的国家的地区

时间:2019-03-02 21:16:22

标签: sql postgresql

我正在pgAdmin 3中的一个名为“国家”的表上使用数据库,该表有五列:名称,区域,面积,人口,gdp。名称是国家/地区的名称。地区是国家在世界上的区域(例如,欧洲,中东,大洋洲等)。面积,人口和国内生产总值是该国家的属性。

我正在尝试选择人口至少超过1000万的5个国家/地区。

我想出了如何选择人口超过1000万的国家/地区:

SELECT name 
FROM country 
WHERE population > 10000000

我知道如何计算每个地区的国家/地区数量:

SELECT region, count(name)
FROM country
GROUP BY region

但是对于我的一生,我无法弄清楚如何以某种方式合并两个查询以获得我想要的结果。

到目前为止,我最接近的是找到其中至少包含5个国家/地区的地区。

SELECT region, count(name)
FROM country
GROUP BY region
HAVING count(name) > 5

我的问题是如何创建一个查询,以显示5个或更多人口在1000万以上的国家/地区。

PS:我正在尝试在单个查询中不创建视图的情况下执行此操作。

4 个答案:

答案 0 :(得分:1)

您可以结合使用WHEREHAVING

SELECT region, count(name)
FROM country
WHERE population > 10000000
GROUP BY region
HAVING count(name) > 5

答案 1 :(得分:0)

尝试这个。

SELECT region, count(name)
FROM country
WHERE population > 10000000
GROUP BY region
HAVING count(name) > 5

答案 2 :(得分:0)

您尝试过吗?

SELECT region, count(name)
FROM country
WHERE population > 10000000
GROUP BY region
HAVING count(name) > 5

答案 3 :(得分:0)

要选择至少5个国家/地区的人口超过1000万的地区?

在HAVING子句中使用条件COUNT即可。

SELECT 
 region, 
 COUNT(*) AS TotalCountries,
 COUNT(CASE WHEN population > 10000000 THEN 1 END) AS TotalOverMillionCountries
FROM country
GROUP BY region
HAVING COUNT(CASE WHEN population > 10000000 THEN 1 END) > 5

或者只是没有总数的区域

SELECT region
FROM country
GROUP BY region
HAVING COUNT(CASE WHEN population > 10000000 THEN 1 END) > 5