Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
SQLzoo,在“选择教程”中选择_Sql - Fatal编程技术网

SQLzoo,在“选择教程”中选择

SQLzoo,在“选择教程”中选择,sql,Sql,我目前正在学习本教程,无法回答问题8: 一些国家的人口是同一大陆任何邻国的三倍以上。给国家和大陆 。。我当前的查询不会被接受为答案: SELECT x.name, x.continent FROM world x WHERE (x.population * 3) > ALL ( SELECT y.population FROM world y WHERE x.continent = y.continent ) 我做错了什么?答案是什么?您的查询的问题是,您没有将大国本身排除在内部查询的结

我目前正在学习本教程,无法回答问题8:

一些国家的人口是同一大陆任何邻国的三倍以上。给国家和大陆

。。我当前的查询不会被接受为答案:

SELECT x.name, x.continent FROM world x
WHERE (x.population * 3) > ALL (
SELECT y.population FROM world y
WHERE x.continent = y.continent )

我做错了什么?答案是什么?

您的查询的问题是,您没有将大国本身排除在内部查询的结果之外。正确的查询是:

SELECT x.name, x.continent
FROM world x
WHERE x.population > ALL(
    SELECT (y.population*3)
    FROM world y
    WHERE x.continent=y.continent
    AND x.name<>y.name
)
请注意内部查询中的最后一个条件,其中我通过执行x.namey.name将x国家从y国家列表中排除。如果不这样做,结果中将不会返回任何行

另外,通常使用id字段排除内部查询中实体列表中的外部实体,但sqlzoo上的表没有id字段。

简单回答:

Select name, continent
From world x
Where population > all(Select max(population)*3 From world y Where x.continent = y.continent AND y.name != x.name)

您选择的国家的人口至少是其邻国的3倍。