2017-07-26 64 views
1

我有兩個型號,ClientProject。 A Client:has_many projects。 A Project有一個fee列,這是一個美元值。我希望開發一個積極記錄查詢,返回'最佳客戶'和'最佳客戶',這些客戶是合併項目費用總額最大的客戶。理想情況下,查詢將按照總計項目值的順序返回一組客戶端ID。Activerecord - 按外鍵分組並返回另一列

我試過Project.joins(:client).group('projects.id, client_id').sum(:fee)它最初看起來像它的工作,但總和是不正確的,我不知道如何訂購它。關於這個查詢應該是什麼樣子的任何建議?

回答

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) 
相關問題