繁体   English   中英

使用Active Record的Rails GROUP BY查询

[英]Rails GROUP BY query using Active Record

我想使用经典的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聚合的,并不执行查询。

DB:PostgreSQL

我想你可以用这个

@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM