在 Rails/Ruby 中,我如何根据表中的日期列按月分组和聚合度量。
我尝试了 Railscasts 中的以下技术。
http://railscasts.com/episodes/29-group-by-month
到目前为止,我的代码是这样的
result = result.where(transaction_date: start..Date.current)
result = result.select(:transaction_date, :quantity)
result.group_by { |t| t.transaction_date.beginning_of_month }
我想,我需要一个与 SQL GROUP BY 等效的 Ruby 来汇总数量。
我正在寻找的 SQLite3 版本是:
select strftime('%m', transaction_date)
, sum(quantity)
from transactions
group by strftime('%m', transaction_date)
最佳答案
所以这是一个很好的例子,说明为什么你应该在开发和生产中使用相同的数据库,因为你真的想在 SQL 中执行此操作,这对于你指定的两个数据库是不同的。我会给你 Postgres 版本。
假设您的模型称为“实体”,并且您要对一个称为数量的属性求和,您将要执行如下操作:
Entity
.select("DATE_TRUNC('month', created_at) AS month, SUM(quantity) AS total_quantity")
.group('month')
生成的实体对象将具有可用于报告的虚拟属性“month”和“total_quantity”。
关于ruby-on-rails - rails 4 : Group by Month,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20083079/