什麼是活動記錄/ Ruby來執行這個查詢on Rails的與集團一起將集合函數總和
SELECT sum(amount) as total_amount FROM payments GROUP BY person_id, product_id
我似乎鏈sum
不能group
方法的最佳途徑。我必須在這裏使用find_by_sql
嗎?
什麼是活動記錄/ Ruby來執行這個查詢on Rails的與集團一起將集合函數總和
SELECT sum(amount) as total_amount FROM payments GROUP BY person_id, product_id
我似乎鏈sum
不能group
方法的最佳途徑。我必須在這裏使用find_by_sql
嗎?
喜歡的東西:
Payment.group(:person_id).group(:product_id).sum(:amount)
應該給你一個哈希的鍵是[person_id, product_id]
陣列,其值的總和。你可能不想:
Payment.group('person_id, product_id').sum(:amount)
雖然,這可能會給你正確的總和,但哈希鍵沒有多大意義。
你也可以說:
Payment.sum(:amount, :group => 'person_id, product_id')
,但將遭受作爲Payment.group('person_id, product_id').sum(:amount)
確實按鍵相同的腦損傷;然而,對於:group
陣列:
Payment.sum(:amount, :group => [ :person_id, :product_id ])
應該產生與數組鍵相同的哈希作爲雙.group
版本。但是,在Rails4中已棄用sum
的:group
格式(感謝Ganeshwara Herawan Hananda Put注意到這一點)。
上面的工作在Rails3中很好,我看不出它在Rails4中不能工作的原因。我沒有方便的Rails4設置,所以我無法驗證。
'Payment.group(「person_id,product_id」)。sum(「amount」)'。我認爲sum方法接受一個group_by選項,但我不確定是否可以將它與多個列定義一起使用。 – lolski