如何在postgresql和rails 3中按月分组

时间:2014-02-21 04:17:37

标签: sql ruby-on-rails ruby ruby-on-rails-3 postgresql

我的价值有2014/03 / 01,2014 / 02 / 20,2014 / 02 / 19,2014 / 02 / 18,2014 / 01/19 ......

我想按月收到金额(价格)。第一个月,第二个月,第三个月,......

使用rails 3&的PostgreSQL。

我试过@items = Item.where(:asin => @item.asin, :domain => @item.domain, :user_id => @item.user_id).order('created_at desc').group {created_at.beginning_of_month } 没用。

我也尝试了其他的东西,但似乎被忽略了,日志中没有任何组或组SELECT "items".* FROM "items" WHERE "items"."asin" = 'B00HI6ZLL2' AND "items"."domain" = 'co.jp' AND "items"."user_id" = 1 ORDER BY created_at desc

2 个答案:

答案 0 :(得分:1)

sum = Array.new(12,0)
Item.each do |item|
  sum[item.created_at.month-1] += item.price  
end

尝试这样可以获得每月的商品价格总和。要获取二月飞蛾总数,您可以从sum[1]

获取此数据

答案 1 :(得分:1)

您可以使用它,但它只适用于支持DATE_FUNC功能的数据库,如PostgreSQL和MySQL。它不适用于SQLite。

@items = Item.select("DATE_TRUNC('month', created_at) AS month, sum(price) AS total_price_per_month").group('month')