如何对时间表行进行分组和汇总

时间:2018-01-17 02:22:09

标签: mysql ruby-on-rails activerecord

我有一个时间表模型,如下所示:

timesheet
-id
-total_hours
-user_id
-date

现在我想制作一份如下所示的报告:

user_id   total_hours

(我将有一个where子句,它将为给定的日期范围选择行,但我理解这部分。)

这是一个我可以使用activerecord的查询,还是我应该只使用psql并使用原始sql?

3 个答案:

答案 0 :(得分:0)

您可以SUM使用Group,如下所示:

TimeSheet.select("user_id,SUM(total_hours) as total_hours").group(:user_id)

答案 1 :(得分:0)

尝试以下方法:

TimeSheet.group(:user_id).sum(:total_hours)

答案 2 :(得分:0)

如果需要,会产生类似

的哈希格式
{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)