Activerecord - 按外键分组并返回另一列的总和

时间:2017-07-26 16:10:37

标签: ruby-on-rails activerecord

我有两个模型,ClientProjectClient :has_many projectsProject的{​​{1}}列是美元值。我想开发一个activerecord查询,返回“顶级客户”,其中“顶级客户”是组合项目费用总额最大的客户。理想情况下,查询将按照项目总值的顺序返回客户机ID的数组。

我已经尝试fee,它最初看起来很有效,但总和不正确,我无法弄清楚如何订购它。关于此查询应该是什么样的任何建议?

1 个答案:

答案 0 :(得分:2)

我对你上述情况的建议你可以只分组基于client_id,然后将费用和下面的方法相加,反向会让你降序

Project.group(:client_id).sum(:fee).sort_by{|k, v| v}.reverse

如果您需要前十名,您可以先使用(10)

Project.group(:client_id).sum(:fee).sort_by{|k, v| v}.reverse.first(10)