【问题标题】:Rails - query to group sumsRails - 查询分组总和
【发布时间】:2011-01-27 18:05:50
【问题描述】:

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

  • 目标:显示本月每天所有公司产品的总访问次数。
  • 首先:我们找到属于 any @company.product 的所有用户(每个用户都有一个 product_id)。
  • 过去 30 天每一天中这些用户的所有访问次数总和,按天分组。
  • 在视图中将这些 visit_count 总和显示为由 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(",")

上面的查询引发了一个错误(2 的 3 个参数),但我尝试了许多与此类似的组合,但我不断收到错误。我只是不太熟悉 ActiveRecord。如何编写此查询?非常感谢。

【问题讨论】:

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


    【解决方案1】:

    这对我有用...

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

    产量...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 2017-12-23
      • 2020-04-06
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多