質問: sql groupで件数の一番多いレコードのみ取る sql groupで件数の一番多いレコードのみ取る oracle10です。 次のようなテーブルがあります。 user -----------テーブル名 id,name,data----列名 1,a,any 1,a,any 1,b,any 2,c,any 3,d,any このテーブルから、idをgroupにして、さらに、一番使用頻度の多いnameを取得したいのです。 表示したいのは、idとnameです。 つまり、取得結果例は次のようになります。 取得結果例 id,name----列名 1,a 2,c 3,d sql文をどのように作れば可能でしょうか? ちなみに、idやnameのマスタテーブルはありません。 自分では、「(select id, name, count(*) from user group by id, name) count」で、countを内部テーブルにして、グループ内で一番多いcount(*)をmaxで取得してみようかと思ったんですが、そこからアイデアが出ませんでした。
回答: select a.id,a.name from (select id,name,count(*) kazu from user group by id,name) a left outer join (select id,name,count(*) kazu from user group by id,name) b on a.id=b.id and a.kazu