1

私は過去2週間の毎日を合計しようとしています。

このコード:

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)>]]

これは正しいですが、値が。であっても、過去2週間の値を返す必要があります0.0

したがって、結果は次のようになります。

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

ありがとうございました。

アップデート

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

過去14日間の質問を解決します。0.0しかし、私はまだ値を表示する方法がわかりません。

4

1 に答える 1

3

存在しない値をdbに強制的に返させようとしているため、SQLでこれを行うのは困難です。ルビーでこれを行う方がはるかに簡単です。簡潔な方法は次のとおりです。

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
于 2012-12-18T06:20:35.807 に答える