• ベストアンサー

SQLの質問

初歩的な質問ですみません。 テーブル foo に以下のような一列があったとします。 colA -- a a a a b b c c c この中からcolAでグループ化したcountが最大のものを抽出するSQLっどう書けばよいのでしょうか (この例では a がセレクトされる結果をなります)。 できる限り一般的な方法でお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • takopon
  • ベストアンサー率69% (27/39)
回答No.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            )           )

snuffy
質問者

お礼

なるほどー。簡単なようで以外と手順踏むんですね。勉強になりました!

関連するQ&A