我在pgAdmin 3中使用一个名为'country‘的数据库,该表有五列:名称、地区、面积、人口、国内生产总值。Name是国家的名称。区域是国家所在的世界区域(例如,欧洲、中东、大洋洲等)。面积、人口和gdp是那个国家的属性。
我正在尝试选择至少有5个国家人口超过1000万的地区。
我已经知道如何选择人口超过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
我的问题是如何创建一个查询来显示人口超过1000万的5个或更多国家的区域。
PS:我试图在不创建视图的情况下,在一个查询中做到这一点。
发布于 2019-03-03 05:32:06
选择至少5个人口超过1000万的国家/地区?
在HAVING子句中使用条件计数可以做到这一点。
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
https://stackoverflow.com/questions/54963074
复制相似问题