ruby-on-rails - rails 4 : Group by Month

标签 ruby-on-rails ruby

在 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/

相关文章:

javascript - 将 ruby​​ 方法移植到 javascript

ruby - 如何从 Ruby 中的多维数组中检索值?

ruby-on-rails - 如何访问我在 Rails 中编写的助手?

ruby-on-rails - 在查询中使用 "select"时未加载回形针图像

ruby - 如何修改图像的颜色以消除活力?

ruby - 案例陈述未按预期工作

ruby-on-rails - 意外的语法错误

ruby-on-rails - 如何在 Rails 中打开 URL?

ruby-on-rails - rails : Relation does not exist for reference with class name in production

ruby-on-rails - 有没有办法在 Active Record 中到达那里