2017-03-05 65 views
2

我希望標題是正確的。我需要總結所有貨幣,即所有的$,£等,但不要將所有貨幣合併爲一個總和。如何分組和彙總所有貨幣

基本上,如果我有2個$4和3X £10,那將是$8£30

我有一個Income模型屬性:currency(串)和:amount(浮動):

我有工作,但我覺得它可以重構一點:

Income.all.group(:currency).count.map do |k,v| 
    Income.where(currency: k).map.sum(&:amount) 
end 

這給了我一個總數組。 OK-ISH。我需要更好的格式,如散列:

{ 
    USD => 8.0, 
    GBP => 30.0 
} 

可能嗎?請問怎麼樣?

回答

2

我認爲下面會做:

Income.group(:currency).sum(:amount) 

的SQL將是這樣的:

SELECT SUM(income.amount) AS sum_amount, currency AS currency 
    FROM income 
    GROUP BY income.currency 
+0

OMG!那很簡單?謝謝 – Sylar

+1

@Sylar是啊,SQL是瘋狂的酷:) –