我有一個表'People'與這些列:id,fname,lname,addr,city,state,zip in Oracle 9.x中SQL查詢從我現有的數據表中獲取一個州中城市最多的郵政編碼
我想人口最多的郵編每個城市每個國家
我寫此查詢:
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子句:具有計數()= MAX(計數()),但得到的錯誤消息:having子句過深或somethig嵌套(甲骨文的9.x)
我只想頂行: - 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
我該如何做到這一點?感謝您的觀看。
==========
ANSWER FOUND吉姆·哈德森的答覆 通過修改提供的查詢一點我是正確的。最終代碼: -
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
);
如果你只通過城市和國家團體,只能選擇城市和國家(加計數) - 然後你會得到一個行每個城市/州 – 2011-02-18 17:25:54