2012-12-17 79 views
1

我想在過去的兩週內每天總結一次。Rails/SQL:在過去的兩週內每天分組並計算總和

此代碼:

Invoice.group('date(filled_at)').sum(:lines_price).to_a 

回報:

[["2012-12-15", #<BigDecimal:ac40068,'0.19275E4',18(45)>], ["2012-12-17", #<BigDecimal:a759234,'0.764235E3',18(45)>]] 

哪個是正確的,但我需要它的回報在過去的兩個星期中的值,即使值爲0.0

所以結果應該是:

[["2012-12-03", 0.0], ... , ["2012-12-17", #<BigDecimal:a759234,'0.764235E3',18(45)>]] 

謝謝。

UPDATE

having("date(filled_at) > ?", Date.today - 14) 

解決了過去14天的問題。但我仍然不知道如何顯示0.0值。

回答

3

您將很難在SQL中這樣做,因爲您試圖強制db返回不存在的值。在ruby中做這件事更容易。這裏是一個簡潔的方式:

summary = Invoice.group('date(filled_at)').sum(:lines_price).to_a 
past_two_weeks = ((Date.today - 14).. Date.today) 

final_result =Hash[*past_two_weeks.map(&:to_s).product([0.0]).flatten].merge Hash[*summary.flatten] 

final_result.to_a