RailsActiveRecord:如何查询A列的最大值并按B列分组?

Rails ActiveRecord: How to query the maximum value of column A and group by column B?

我想做类似的事情

  Model.select(column_a: :maximum, :column_b).group_by(:column_b)

我正在使用 MySQL 5.6 和 rails 5

您可以使用 DBMS max 函数和 GROUP BY:

Model.select('MAX(column_a) AS max').group(:column_b)

或使用ActiveRecord::Calculations#maximum方法,加上group

Model.group(:column_b).maximum(:column_a)

尽管结果有所不同,因为它 returns 如下形式的散列:

{ column_b => column_a, ... }

这对我有用。

Model.select('MAX(column_a) AS column_a', :column_b).group(:column_b)

如果您将最大值保留为 max 或模型中未作为属性出现的其他名称,您将不会像 rails 那样在对象中看到该值'将结果映射到任何东西。