0

いくつかのデータと対応する都市、州を含むテーブルがあります。特定の州で最も多くの都市が発生することを確認したいと思います。コロラド州デンバーで100回発生し、コロラド州ボルダーで10回発生した場合、デンバーが最大数であるため、デンバーのみを表示したいとします。次のことを試しましたが、他のすべての都市もリストされています。

select state, city, count(city) 
from tab12 
group by city 
order by state, count(city);

どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

1
SELECT state, city, max(cnt)
FROM
(select state, city, count(city) as cnt
 from tab12 group by city order by state, count(city))
order by state

同じ頻度の都市がある可能性があるケースもカバーしたい場合:

SELECT state, city, count(*) cnt 
FROM cities GROUP BY state,city  
HAVING cnt = (SELECT max(cnt) 
              FROM 
              (SELECT count(*) cnt FROM cities group by state,city) as tbl) 
ORDER BY state;
于 2012-08-09T16:18:51.567 に答える
1
SELECT A.* FROM
(
    SELECT city,state,COUNT(1) citycount
    FROM tab12 GROUP BY state,city
) A INNER JOIN
(
    SELECT state,MAX(citycount) citycount FROM
    (SELECT state,city,COUNT(1) citycount
    FROM tab12 GROUP BY state,city) C
) B
USING (state,citycount)
ORDER BY A.state,A.city;

このクエリは、同じ数の都市が複数ある州で機能するはずです。

于 2012-08-09T17:10:00.273 に答える
0

私の頭の上から、テストされていません:

select state as thestate, city as thecity, count(*) as thecount
from tab12
group by state, city
having thecount = (
  select max(subcnt)
  from(
    select count(*) as subcnt
    from tab12 sub
    where sub.state = thestate
    group by sub.city
  )
)

同点の場合、これは最大数と同点のすべての都市を返すことに注意してください。

于 2012-08-09T16:28:10.363 に答える