2016-07-25 16 views
0

記錄我已經嘗試了幾種解決方案,但只有一個足夠接近,我想這是什麼如何取得按月

Sale.all.group("DATE_TRUNC('month', created_at)").count 

但它返回這樣

{2016-07-01 00:00:00 UTC=>19, 2016-04-01 00:00:00 UTC=>70}

的東西是存在的可以做這種格式的東西?

[month,number of sales] ??

使用postgres db。

+0

你試過'Sale.select( 「月(created_at)作爲sale_month,COUNT(*)作爲monthly_sales」)。組(「Month(created_at)」)'這將返回響應'sale_month'和'monthly_sales'的'ActiveRecord'對象。確定您是否正確構建查詢的最佳方法之一是查看生成的sql,您可以通過將'to_sql'添加到查詢鏈的末尾來執行此操作。 – engineersmnky

+0

如何使用退貨銷售:: activerecord_relation? –

+0

你的問題沒有任何意義。你是什​​麼意思你如何使用'ActiveRecord :: Relation'? – engineersmnky

回答

0

嘗試使用EXTRACT功能的PostgreSQL,

在Rails代碼

results = Sale.all.group("EXTRACT(MONTH FROM created_at").select("EXTRACT(MONTH FROM created_at) AS month, COUNT(*) as count") 

p results[0].month if results[0] 
+0

如何使用退貨銷售:: activerecord_relation? –

+0

它返回包含兩個字段「month」和count「的對象數組。@PetrosKyriakou – fengd

+0

引用中出現錯誤:S –