Dav*_*d_R 3 sql activerecord ruby-on-rails
我有一个 ActiveRecord 模型,有两列我想要分组和求和(均为整数)。我似乎无法解决的问题是如何将第一列求和为第二列的一组,第二列按范围分组。
我知道我可以执行 Model.sum(:first_column, group: :second_column),但这会导致许多组,因为第二列值分散。如何对第二列的值进行分组,例如在 10 的范围内(0-9、10-19、20-29 等)?
您可以在 SQL 中对表达式进行 GROUP BY,而不必仅对列进行 GROUP BY。你可以这样做:
Model.sum(:first_column, :group => 'second_column / 10')
Run Code Online (Sandbox Code Playgroud)
或者像这样:
Model.group('second_column / 10').sum(:first_column)
Run Code Online (Sandbox Code Playgroud)
两者都应该向数据库发送一些像这样的 SQL:
select sum(first_column), second_column / 10
from models
group by second_column / 10
Run Code Online (Sandbox Code Playgroud)
会有别名、引用……但效果是一样的。
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |