【问题标题】: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】:

    您可以将SUMGroup 一起使用,如下所示:

    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)
        

        【讨论】:

          猜你喜欢
          • 2015-09-09
          • 2023-04-02
          • 2019-05-05
          • 1970-01-01
          • 2015-06-04
          • 2021-08-17
          • 2019-01-25
          • 2015-05-17
          • 1970-01-01
          相关资源
          最近更新 更多