我有一个日期字段(Model.expires_on
),我需要按月对记录进行分组,并得到Model.amount
字段的总和。我能做到:
Model.all.group(:expires_on).sum(:amount)
但是当我尝试按月分组时,我无法得到它。我试过了:
Model.all.group(:expires_on.month).sum(:amount)
答案 0 :(得分:1)
对于Postgresql,这应该可行
Model.group("date_part('month',expires_on)").select("date_part('month',expires_on) as expiration_month ,sum(amount) as sum_amount")
您可能也可以使用,具体取决于您的SQL提供程序,因为Postgresql没有月份功能
Model.group("MONTH(expires_on)").select("MONTH(expires_on) as expiration_month,sum(amount) as sum_amount")
此集合中的对象将响应expiration_month
和sum_amount
知道这将结合所有月份而不管年份