Noob Concern:子查询计算

时间:2012-11-03 21:30:10

标签: sql tsql

我有一个表 bbc ,其中包含以下列:

名称(指世界某个特定地区的国家/地区名称)

地区(世界大陆)

人口(名称字段中的国家/地区) 我想回答的问题是:

问题如下:
“有些国家的人口是其邻国(在同一地区)的三倍以上。给国家和地区。”

我在想答案可能是这样的:

SELECT a.name, a.region FROM bbc AS a
WHERE a.region IN
     (
        SELECT b.region FROM bbc AS b 
        GROUP By b.region 
        HAVING MIN(b.population) < 3*b.population)

但老实说,我在最后一行失去了它...我不知道我怎么会找到比同一地区任何一个邻居的三倍多的反击!相当难熬。 O_o

任何和所有帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

select
   a.name, a.region
from bbc as a
where 
    a.population >
    (
        select 3*max(b.population)
        from bbc as b
        where b.region = a.region and b.name <> a.name
    )

答案 1 :(得分:0)

Select
  a.name,
  a.region
From
  bbc as a
Where
  Not Exists (
    Select
      'x'
    From
      bbc as b
    Where
      a.region = b.region And
      a.name != b.name And
      a.population < 3 * b.population
  )

答案 2 :(得分:-1)

SELECT name, continent from world x
WHERE (SELECT population from world y
          where y.name = x.name 
           and y.continent = x.continent
           and population > 0) > ALL 
(SELECT 3*population from world z 
          where z.continent = x.continent 
             and z.name != x.name
          and population > 0);