- ベストアンサー
SQLの質問
初歩的な質問ですみません。 テーブル foo に以下のような一列があったとします。 colA -- a a a a b b c c c この中からcolAでグループ化したcountが最大のものを抽出するSQLっどう書けばよいのでしょうか (この例では a がセレクトされる結果をなります)。 できる限り一般的な方法でお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
別名と副問い合わせを使うと出来ます。 まず、グループ化してカウントをとるSQLを書きます。 カウントには別名をつけます。 select colA,count(*) CNT from foo group by colA これを、以下のようにfromの副問い合わせにすることができます。 select MAX(CNT) from ( select colA,count(*) CNT from foo group by colA ) これをさらに、havingの副問い合わせに入れてあげるとできあがりです。 select colA,count(*) from foo group by colA having count(*) = (select MAX(CNT) from ( select colA,count(*) CNT from foo foo2 group by colA ) )
お礼
なるほどー。簡単なようで以外と手順踏むんですね。勉強になりました!