我正在做khanacademy的SQL课程,并且正在使用this数据集。它包括列等级(主键),国家/地区,人口等。我想选择与全球人口平均值接近的国家-例如如果全球人口平均值为3,000万,我想选择人口为20-40百万的国家。

现在,我尝试了几种方法,但没有任何效果。 This question是类似的,并且我试图像这样修改答案:

SELECT a.country, a.population, b.max_pop
FROM countries_by_population a
INNER JOIN (
    SELECT rank, MAX(population) as max_pop
    FROM countries_by_population
    GROUP BY rank
) b ON a.rank = b.rank
WHERE a.population > b.max_pop*0.9;


但是,这将返回所有行,并且max_pop只是该国家/地区的人口。除了工作之外,我觉得应该有一个比将桌子本身连接起来更简单的解决方案。它是什么?

最佳答案

这里最重要的区别是没有group by rank

select *
from countries_by_population
where population * 3.000 / (select avg(population) from countries_by_population)
    between 2 and 4

关于mysql - 选择人口接近平均值的国家,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38360494/

10-10 17:42