2013-08-05 94 views
0

我有一個模型叫收據,並有以下幾點:Ruby/Rails:如何顯示每年和每月的總和值?

  • date_of_purchase - 日期時間
  • total_value - 浮

我有一個包含許多收據的數據庫,例如:

收據1

  • date_of_purchase = 2012-01-23
  • total_value = 6

收據2

  • date_of_purchase = 2012-01-04
  • total_value = 70

收據3

  • date_of_purchase = 2013年2月14日
  • total_value = 1.23

收據4

  • date_of_purchase = 2013年2月6日
  • total_value = 90.34

...

收據123

  • date_of_purchase = 2013年8月5日
  • total_value = 43.69

如何顯示這樣的事情:

{2012 => {1 => 76},2013 => { 2 => 92.23,3 => 34.43,...}}

+0

你有什麼這麼遠嗎? –

+0

我只知道如何分組,但不能按年份和月份進行總結和分組。 –

回答

1

下面應該工作

receipts = Receipt.find_by_sql("SELECT MONTH(date_of_purchase) AS month, 
         YEAR(date_of_purchase) AS year, SUM(total_value) as sum 
         FROM receipts GROUP BY year, month") 

receipts_hash = {} 
receipts.each do |receipt| 
    receipts_hash[receipt.year] = {} unless receipts_hash[receipt.year] 
    receipts_hash[receipt.year][receipt.month] = receipt.sum 
end 
+0

它返回一堆元素代替: => [#,#,#,#,#,#,#,#,#,#,#,#, #,#,#,#,#,#,#,#,#,#,#] –

+0

檢查'receipts_hash' – Salil