Oracle에 id, fname, lname, addr, city, state, zip 등의 'People'테이블이 있습니다. 9.x의데이터가있는 기존 테이블에서 도시에 가장 많은 채워진 우편 번호를 가져 오는
내가이 쿼리 작성
주 당시 당 가장 인구가 우편 번호를 얻으려면 :
Select City, State, Zip, count(*)
From People
Group By City, State
Order By count(*)
를하지만 국가처럼, (를 들어 나에게 도시에 대한 여러 행을 제공합니다 구성) : -
오류 메시지가 카운트 ( )를 갖는 = 최대 (카운트 ())하지만 가지고 :City -- State -- Zip -- Count(*)
City0 -- ST0 -- 32111 -- 50
City1 -- ST1 -- 11223 -- 100
City1 -- ST1 -- 11225 -- 90
City1 -- ST1 -- 11226 -- 50
City2 -- ST1 -- 11255 -- 70
City3 -- ST2 -- 55443 -- 60
내가 좋아하는 HAVING 절 시도 NESTED 절은 너무 깊이 또는 somethig에 가지고 (오라클 9.x의)
난 단지 원하는 TOP 행 : -City1 - ST1 - 11223 - 100 모든 City1 - ST1 행, 동일하게 유지 될 도시 당 도시 당 하나의 행만있는 기타 행. 원할 경우 출력 : -
City -- State -- Zip -- Count(*)
City0 -- ST0 -- 32111 -- 50
**City1 -- ST1 -- 11223 -- 100**
City2 -- ST1 -- 11255 -- 70
City3 -- ST2 -- 55443 -- 60
어떻게해야합니까? 보고 주셔서 감사합니다. 내가 좀 잘 그것을 가지고 제공된 쿼리를 수정하여 JIM 허드슨의 REPLY 찾았
==========
답변. 최종 코드 : -
select city, state, zip, counter from (
select city, state, zip, count(*) as counter from people group by city, state, zip
)
where counter = (
select max(count2) from (
select city as city1, state as state1, zip as zip1, count(*) as count2 from people group by city, state, zip )
where city=city1 and state=state1
);
이 - 당신은 각 도시에 대해 하나 개의 행을 얻을 것이다/주 –