【问题标题】:Rails GROUP BY query using Active RecordRails GROUP BY 使用 Active Record 查询
【发布时间】:2019-07-15 13:33:16
【问题描述】:

我想使用经典的 Active Record 来编写这个查询,而不是原始 sql。

SELECT

   user_id,
   term, 
   SUM(views) AS Views,
   SUM(clicks) AS Clicks

FROM reports
GROUP BY user_id, term

试过了,还是不行。

Report.group([:user_id, :term]).sum([:views, :clicks])

我知道可以使用 .group_by{},但它不是很有效,因为它是由 Ruby 聚合的,而不是执行查询。

数据库:Postgresql

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-5 rails-activerecord ruby-on-rails-5.2


    【解决方案1】:

    我觉得你可以用这个

    @reports = Report.select("reports.user_id, reports.term,
      sum(reports.views) as total_views
      sum(reports.clicks) as total_clicks").
      group("reports.user_id, reports.term")
    

    请注意全部(作为总和结果)虽然它们没有出现,但如果你叫名字它们确实存在

    @report.first # total_views and total_clicks not show up in rails console but
    @report.first.total_views # you will see total calculation
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多