Railsで集計処理を実装
Railsで集計処理を実装
蓄積したデータの合計や平均などを求めたいなどというとき
SQLで「Group By」を使用しますが
Railsではこのような場合にはActiveRecord::Calculationsを利用するようです。
http://api.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html
こちらのモジュールの使い方ですが
まずはこれを利用したいエンティティーに対応したModelクラスに
このモジュールをミックスインします。
class HogeHoge < ActiveRecord::Base
include ActiveRecord::Calculationsend
こうすると、このモデルクラスで下のような関数が利用できるようになります。
- average :平均値を求める
- count :カウント
- maximum :最大値
- minimum :最小値
- sum :集計値
これを使って集計を行ってみる例がこんな感じです。
HogeHogeエンティティの「hoge_age」が30以上の「fuga」カラムの集計値が取得できます。
@hoge_sum = HogeHoge.sum(:fuga, :conditions => "hoge_age > 30")
これを利用すればかなり簡単に集計処理がかけます。