2

グループ化して合計したい2つの列があるActiveRecordモデルがあります(どちらも整数です)。私が解決できないと思われる問題は、最初の列を2番目の列のグループとして合計し、2番目の列を範囲でグループ化する方法です。

Model.sum(:first_column、group::second_column)を実行できることは知っていますが、2番目の列の値が分散しているため、多くのグループになります。たとえば、10の範囲(0-9、10-19、20-29など)で2番目の列の値をグループ化するにはどうすればよいですか?

4

1 に答える 1

4

SQLでGROUPBY式を使用できます。列だけをGROUPBYする必要はありません。あなたはこのようなことをすることができます:

Model.sum(:first_column, :group => 'second_column / 10')

またはこのように:

Model.group('second_column / 10').sum(:first_column)

これらは両方とも、次のようなSQLをデータベースに送信する必要があります。

select sum(first_column), second_column / 10
from models
group by second_column / 10

エイリアス、引用符などがありますが、効果は同じです。

于 2012-11-17T07:05:01.843 に答える