ActveRecordでGroupByでのカウント値を得る
ActveRecordでGroupByでのカウント値を得る場合,カウントメソッドを :groupオプションを含めて行う。
たとえば、
counts = Hoge.count(:group => "group_id")
のようにする。このようにすると
SELECT count(*) AS count_all, group_id AS group_id FROM `hoges` GROUP BY group_id
のようなSQLが実行され、結果は[[<件数>,
なので、group byに指定した各値が何件ずつあるか知りたい場合には、
Hoge.count(:group => "group_id").each do |c| puts "#{c[1]}は#{c[0]件あるよ!}" end
groupがいくつあるかをしるには、
counts = Hoge.count(:group => "group_id") puts "#{counts}グループあるよ!"
とよれば、良さそうですね。