Rails - 查询分组总和

时间:2010-11-03 21:29:16

标签: ruby-on-rails activerecord ruby-on-rails-3

我正在尝试构建执行以下操作的查询:

  • 目标:显示本月每天所有公司产品的总访问量。
  • 首先:我们发现属于任何 @ company.product的所有用户(每个用户都有一个product_id)。
  • 总结这些用户中的所有访问次数,按天分组,过去30天中的每一天。
  • 在视图中将这些visit_count sums显示为30个逗号分隔值(23,26,21,63,21,42等)的字符串。

到目前为止(还没有总结):

#controller
@visits = User.group("date(created_at)").having("product_id IN (?) AND created_at > ?", @company.products.select("id"), 1.month.ago).order("created_at").select("visit_count")  
  # this simpler version causes error: undefined method 'empty?' for 2010-10-03 17:55:57 UTC:Time
  @visits = User.group("created_at").having("date(created_at) > (?)", 1.month.ago)

#view:
<%= @visits.map(&:visit_count).join(",")

上面的查询引发了一个错误(3个参数为2),但我尝试了许多与此类似的组合,并且我不断收到错误。我对ActiveRecord不太熟悉。怎么会写这个查询?非常感谢你。

1 个答案:

答案 0 :(得分:1)

这对我有用......

User.group("DATE(created_at)").having(['created_at > ?', 1.month.ago]).count

...产量

=> {"2011-01-19"=>2, "2011-01-27"=>1}