我有一个表人(身份证,姓名,城市)。
我想要返回每个城市中只有一个人的记录(城市应该是唯一的)。
例如,如果有10条记录,其中3条有城市='孟买'其他3条记录有城市='纽约'其余4人有城市='芝加哥',然后我想返回3条记录(每个城市一条记录)。
我尝试过各种各样的事情,包括DISTINCT,ROWNUM,但没有得到理想的结果。
任何人都可以告诉我如何实现这一目标?
答案 0 :(得分:0)
试试这个: -
select city,id, name
from Person
group by city
order by city
答案 1 :(得分: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 ......你期望在那个城市看到什么结果?
答案 2 :(得分:0)
这可能是你想要的吗?一个记录,计算每个城市的名称数量?
select city,count(*) as COUNT
from Person
group by city
order by city
答案 3 :(得分: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最低的行。