给定表的棘手的SQL查询

时间:2016-11-16 05:21:48

标签: mysql sql

给出一个类似下面的表

+-------------+-----------+---------+------------+--------------+
| name        | continent | area    | population | gdp          |
| Afghanistan | Asia      | 652230  | 25500100   | 20343000000  |
| Albania     | Europe    | 28748   | 2831741    | 12960000000  |
| Algeria     | Africa    | 2381741 | 37100000   | 188681000000 |
| Andorra     | Europe    | 468     | 78115      | 3712000000   |
| Angola      | Africa    | 1246700 | 20609294   | 100990000000 |
+-------------+-----------+---------+------------+--------------+

获得以下结果所需的查询是什么。

有些国家的人口数量是其邻国(在同一大洲)的三倍以上。给各个国家和大陆。

修改

这是我到目前为止所尝试过的。

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

以上查询不会返回任何记录:(

并补充说这不是家庭作业。我正在尝试为后端开发人员访谈刷新SQL。(暂时不使用SQL而是使用对象关系映射框架)

2 个答案:

答案 0 :(得分:0)

尝试此查询

SELECT name, continent
FROM countries x
WHERE x.population > ALL (SELECT population * 3 FROM countries y WHERE x.continent = y.continent AND x.name <> y.name);

答案 1 :(得分:0)

试试这个: -

SELECT name, continent FROM world where name not in(
   SELECT name FROM world a where name =
     ALL(SELECT name FROM world b where a.continent =b.continent and a.population>b.population*3)
)