轨道:按天分组和另外一列


class Visitor
  has_many :sessions
end
class Session
  belongs_to :visitor
  belongs_to :site
end
class Site
  has_many :sessions
end

我希望能够获得每天网站的访问者数量。 由于访问者不直接与站点相关联,但会话是,因此我需要获取特定站点的所有会话,按天分组,然后按visitor_id分组。 下面是一些示例数据(按 created_at ASC 排序(:

visitor_id  site_id   created_at
6           3         2011-09-27
6           3         2011-09-27
7           3         2011-09-27
2           3         2011-09-29
7           3         2011-09-29

理想情况下,我应该看到在 09/27 有 2 个唯一身份访问者,在 09/29 也有 2 个唯一身份访问者。 我试过这个:

Session.group('date(created_at)').group('visitor_id').size

但我得到这个回报(这是不正确的(:

 # => {Tue, 27 Sep 2011=>3, Thu, 29 Sep 2011=>2} 

谢谢大家!

@counts = Session.group('date(created_at), visitor_id').count
@counts.each do |(date, visitor), count|
  puts "#{visitor.name} visted the site #{count} times on #{date}"
end
Session.where(:created_at => desired_date).group('visitor_id').count

抱歉,这里没有控制台可以测试。


@counts = Session.group('date(created_at)').
                  select("count(distinct sessions.visitor_id) as total, sessions.created_at").
                  all
@counts.each do |count|
  puts "#{count.total} on #{count.created_at.strftime('%m/%d/%y')}"
end  

最新更新