我正在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:我正在尝试在单个查询中不创建视图的情况下执行此操作。
答案 0 :(得分:1)
您可以结合使用WHERE
和HAVING
:
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