【问题标题】:How to group and sum timesheet rows如何对时间表行进行分组和求和
【发布时间】:2018-01-17 02:22:09
【问题描述】:
我有一个时间表模型,如下所示:
timesheet
-id
-total_hours
-user_id
-date
现在我想生成一个如下所示的报告:
user_id total_hours
(我将有一个 where 子句,它将选择给定日期范围内的行,但我理解那部分)。
这是我可以使用 activerecord 的查询,还是应该只使用 psql 并使用原始 sql?
【问题讨论】:
标签:
mysql
ruby-on-rails
activerecord
【解决方案1】:
您可以将SUM 与Group 一起使用,如下所示:
TimeSheet.select("user_id,SUM(total_hours) as total_hours").group(:user_id)
【解决方案2】:
尝试以下方法:
TimeSheet.group(:user_id).sum(:total_hours)
【解决方案3】:
如果需要,结果为散列格式,如
{251=>0, 129=>2, 195=>4}
这里 251 和 129 是 user_id,0 和 2 是 total_hours
试试这个:
TimeSheet.group(:user_id).sum(:total_hours)
否则(对于 ActiveRecord::Relation):
TimeSheet.select("user_id,SUM(total_hours) as total_hours").group(:user_id)