【发布时间】:2012-04-06 06:09:04
【问题描述】:
优先级属于用户。优先级可以有 4 个周期(枚举) - :day, :week, :month, :quarter
我正在尝试编写一个活动记录 .count 语句,以获取具有优先级的唯一用户的计数,该时间段的值等于 :day, :week, :month, :quarter。
所以基本上我想知道有多少人对每个时期的这些值至少有一个优先级。谢谢!
【问题讨论】:
标签: ruby-on-rails activerecord
优先级属于用户。优先级可以有 4 个周期(枚举) - :day, :week, :month, :quarter
我正在尝试编写一个活动记录 .count 语句,以获取具有优先级的唯一用户的计数,该时间段的值等于 :day, :week, :month, :quarter。
所以基本上我想知道有多少人对每个时期的这些值至少有一个优先级。谢谢!
【问题讨论】:
标签: ruby-on-rails activerecord
Priority.group('period').count('user_id', :distinct => true)
应该为您提供用户计数的句点哈希。按期间分组是 count 返回哈希值而不是单个值的原因,并使计数不同可确保不会重复计算用户。
检查解释计划,但要使查询速度相当快,您可能需要在 period 列上建立索引(可能是 [period, user_id] 索引)
【讨论】:
您需要在 4 个请求中执行此操作。每个时期一个。
User.where(:priorities => :day).count
User.where(:priorities => :week).count
User.where(:priorities => :month).count
User.where(:priorities => :quarter).count
【讨论】: