Noob Concern:T-SQL子查询

时间:2012-11-03 20:37:30

标签: sql-server tsql

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

  • name(指世界特定地区内某个国家/地区的名称)
  • region(世界大陆)
  • population(名称字段中的国家/地区人口)

我想回答的问题:

查找属于所有人口少于250000000的地区的每个国家/地区。显示姓名,地区和人口。

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

SELECT name, region, population 
FROM bbc 
GROUP by region 
HAVING MAX(population) < 250000000 

我觉得我离这个答案有点偏离...任何帮助都将不胜感激!

3 个答案:

答案 0 :(得分:2)

抱怨我的GROUP BY中不存在姓名和人口。所以我使用子查询作为解决这个问题的方法。

SELECT name, region, population FROM bbc
WHERE region IN

(SELECT region FROM bbc 
GROUP BY region 
HAVING MAX(population) < 25000000)

答案 1 :(得分:1)

select b.name, b.region, b.population
from bbc as b
where
    b.region in
    (
        select t.region
        from bbc as t
        group by t.region
        having max(t.population) < 25000000
    )

答案 2 :(得分:0)

Select
  b.name, 
  b.region, 
  b.population
From
  bbc b
Where
  Not Exists (
    Select
      'x'
    From
      bbc b2
    Where
      b.region = b2.region And
      b.population > 250000000
  )