2013-08-26 3 views
-1

Person (id, name, city) 테이블이 있습니다.일부 특성이 고유 한 테이블에서 레코드 얻기

저는 각 도시에서 한 명만 가진 사람의 기록을 반환하고 싶습니다 (도시는 고유해야 함). 이는 중 10 개 개의 레코드가있는 경우

예를 들어, 3, 다른 세 도시 = '뉴욕'이 4 도시 = '시카고'그때 (3 개 레코드를 반환 할 한 나머지 도시 = '뭄바이'이 각 도시마다 하나씩).

나는 DISTINCT, ROWNUM을 포함하여 여러 가지를 시도했지만 원하는 결과를 얻지 못했습니다.

아무에게도 어떻게 달성 할 수 있습니까?

+0

SQL을 게시 할 수 있습니까? 무슨 데이터베이스 야? – ruffrey

답변

0

이 시도 : - 당신은 당신이 별개의 목록을 반환 할 말은 경우에 당신은 당신이 한 사람 만 나와 가지고 그 도시를 반환 할 뜻 경우

select city,id, name 
    from Person 
    group by city 
    order by city 
+0

저를 제공합니다 : 'ORA-00979 : 표현 00979. 00000 BY하지 않는 GROUP - "표현 BY하지 않는 그룹을" * 원인 : * 작업 :' – Vikram

+0

@Vikram : - 내 대답을 업데이트했습니다. 확인해주십시오!! –

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 

nce ... 결과를보고 싶습니까? 만약 당신이 이명/이드를 필요로한다면 이것은 당신의 기록이 2 개의 다른 도시에서 3 명의 사용자와 마지막 도시에서 4 명의 사용자를 가지기 때문에 불가능합니다. 그래서 어떤 "사람"이 결과에서보고 싶습니까? 그래서 뭄바이에는 A, B, C가 있습니다. 그 도시에서 어떤 결과를 기대합니까?

0

찾고 계신 것이 있으십니까? 각 도시에 대해 얼마나 많은 이름의 수를 가진 단일 레코드 ??

select city,count(*) as COUNT 
from Person 
group by city 
order by city 
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를 가진 행을 반환합니다.

관련 문제