如何在 ActiveRecord 中按值范围分组(轨道上的红宝石)



我有一个ActiveRecord模型,它有两列我要分组和求和(都是整数)。我似乎无法解决的问题是如何将第一列汇总为第二列的一组,第二列按范围分组。

我知道我可以做Model.sum(:first_column,组::second_column),但这会导致许多组,因为第二列值是分散的。如何对第二列的值进行分组,例如在 10 范围内(0-9、10-19、20-29 等)?

您可以在 SQL 中 GROUP BY 表达式,而不必只用一列进行 GROUP BY。你可以做这样的事情:

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

会有别名,引用,...但效果是一样的。

最新更新