我正在尝试在这里做问题9: https://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial
我目前有代码:
SELECT continent, SUM(y.population) as Population
FROM world AS y
GROUP BY(y.continent)
HAVING SUM(y.population) < 250000000;
这使各大洲的人口总数低于250000000.我知道我需要将其包含在另一个选择中以利用返回的大陆,但不知道如何做到这一点?
我试过这样的事情:
SELECT A.continent from world A
INNER JOIN(
SELECT B.continent, SUM(B.population) as Population
FROM world B
GROUP BY(B.continent)
HAVING SUM(B.population) < 250000000
) ON A.continent = B.continent;
^这是为了尝试获得一个大陆的单个列表,然后我可以将其包含在另一个选择中以迭代并打印国家/地区名称,尽管我觉得必须有一种方法可以直接遍历来自大陆列的大陆列第一个例子?
这可能是非常微不足道的事情,但无论任何帮助都会很棒
答案 0 :(得分:0)
有多种方法可以解决这个问题 - 我使用了非洲大陆所有国家的数量=人口数量<25000000的国家数量 你的主要错误在于逻辑 - SUM - 它应该是每个国家,而不是摘要
select name,w1.continent,population
from world w1
join
(
SELECT distinct continent, count(name) cnt
FROM world x
WHERE population<=25000000
group by continent
)w2
on w1.continent=w2.continent
where cnt=(select count(name) from world where w1.continent=continent)