所以任务 8 说:一些国家的人口是任何邻国(在同一大陆)的三倍以上。给国家和大洲。
我觉得有点不清楚。哪些是邻居?这就是大陆上所有的国家吗?如果是,那么下一个问题是我们是否与最小邻居或最大邻居进行比较。假设它是最大的邻居。然后查询将是这样的
select name, continent
from world w1
where w1.population > (select max(3*w2.population)
from world w2
where w2.continent = w1.continent
and w2.name <> w1.name)
否则,如果它是所有邻居的 3 倍,那就是这个
select name, continent
from world w1
where w1.population > (select 3*sum(w2.population)
from world w2
where w2.continent = w1.continent
and w2.name <> w1.name)
希望能帮助到你。
编辑:Oracle SQL 手册 (E26088-01) 说关于 ALL 功能:
将值与列表中的每个值或查询返回的值进行比较。
例子:
SELECT * FROM employees
WHERE salary >=
ALL ( 1400, 3000)
ORDER BY employee_id;
首先进行聚合,然后进行比较,我们将其简化为一个比较。给定示例表中的结果是相同的。但是针对所有国家的查询实际上可能会给出不同的结果。所以毕竟我必须说你的查询更好。如果您在一个大陆上有一个人口为 1 mio、3.5 mio 和 11 mio 的国家,那么实际上第二个国家是第一个国家的 3 倍,第三个国家是第二个国家的 3 倍。我的查询只会将第二个国家与第三个国家进行比较,但您的查询也会将第一个国家与第二个国家进行比较。