我有两个模型,Client
和Project
。 Client
:has_many projects
。 Project
的{{1}}列是美元值。我想开发一个activerecord查询,返回“顶级客户”,其中“顶级客户”是组合项目费用总额最大的客户。理想情况下,查询将按照项目总值的顺序返回客户机ID的数组。
我已经尝试fee
,它最初看起来很有效,但总和不正确,我无法弄清楚如何订购它。关于此查询应该是什么样的任何建议?
答案 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)