Geo*_*ath 5 ruby ruby-on-rails
在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 }
Run Code Online (Sandbox Code Playgroud)
我想,我需要与SQL GROUP BY相当的Ruby来汇总数量。
我正在寻找的SQLite3版本是:
select strftime('%m', transaction_date)
, sum(quantity)
from transactions
group by strftime('%m', transaction_date)
Run Code Online (Sandbox Code Playgroud)
因此,这是一个很好的示例,说明了为什么您应该在dev和prod中使用相同的数据库,因为您确实想在SQL中执行此操作,这对于您指定的两个数据库而言会有所不同。我给你Postgres版本。
假设您的模型称为“实体”,并且要对一个称为“数量”的属性求和,那么您将需要执行以下操作:
Entity
.select("DATE_TRUNC('month', created_at) AS month, SUM(quantity) AS total_quantity")
.group('month')
Run Code Online (Sandbox Code Playgroud)
生成的Entity对象将具有虚拟属性“ month”和“ total_quantity”,您可以将其用于报告。
归档时间: |
|
查看次数: |
5536 次 |
最近记录: |