Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL世界数据库;寻找至少有五个国家人口超过1000万的地区_Sql_Postgresql - Fatal编程技术网

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

SQL世界数据库;寻找至少有五个国家人口超过1000万的地区,sql,postgresql,Sql,Postgresql,我正在使用pgAdmin 3中的一个数据库,它位于一个名为“country”的表中,该表有五列:名称、地区、面积、人口、gdp。Name是国家的名称。区域是该国家所在的世界范围内的区域(例如,欧洲、中东、大洋洲等)。面积、人口和gdp是那个国家的属性 我试图选择至少有5个国家人口超过1000万的地区 我已经找到了如何选择人口超过1000万的国家: SELECT name FROM country WHERE population > 10000000 我知道如何计算每个地区的国家数量

我正在使用pgAdmin 3中的一个数据库,它位于一个名为“country”的表中,该表有五列:名称、地区、面积、人口、gdp。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
我的问题是如何创建一个查询,显示5个或更多人口超过1000万的国家


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

您可以将
WHERE
have
组合起来:

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

SELECT region, count(name)
FROM country
WHERE population > 10000000
GROUP BY region
HAVING count(name) > 5
你试过这个吗

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

选择至少有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

在上次查询中添加
where
子句。谢谢!我觉得自己像个傻瓜,忘记了我可以插入WHERE子句。我一直试图把所有的事情都纳入HAVING条款中,并且在兜圈子。