-1

我有一个表人(id,name,city)。

我想返回每个城市只有一个人的人的记录(城市应该是唯一的)。

例如,如果有 10 条记录,其中 3 条城市 = 'Mumbai',其他 3 条城市 = 'New York',其余 4 条城市 = 'Chicago',那么我想返回 3 条记录(每个城市一条)。

我尝试了各种方法,包括 DISTINCT、ROWNUM,但没有得到想要的结果。

谁能告诉我如何实现这一目标?

4

4 回答 4

0

如果你的意思是你想返回那些只有一个人列出的城市......

Select Max(ID), max(name), City, count(city)
From Person
Group by City
Having count(City) = 1

如果您的意思是要返回不同的城市列表...

SELECT city
FROM Person
GROUP BY city

如果您的意思是要返回一个城市中的所有人员,但只列出该城市一次……您希望看到什么结果?如果您需要人名/ID,这是不可能的,因为您的记录在 2 个不同的城市有 3 个用户,在最后一个城市有 4 个用户。那么您希望在结果中看到什么“人”... 那么在孟买有 A、B、C... 您希望该城市看到什么结果?

于 2013-08-26T18:44:25.973 回答
0

无论哪个城市,您都想要一排?

select city,id, name
from
  (select city, id, name,
      row_number() over (partition by city order by id) as rn 
   from Person
  ) dt
where rn = 1

这将返回每个城市 ID 最低的行。

于 2013-08-26T21:21:10.977 回答
0

尝试这个:-

  select city,id, name
  from Person
  group by city
  order by city
于 2013-08-26T18:39:33.577 回答
0

这可能是你要找的吗?一条记录,计算每个城市有多少个名字?

select city,count(*) as COUNT
from Person
group by city
order by city
于 2013-08-26T18:57:30.677 回答