优先级属于用户。优先级可以有4个周期(枚举)-:天、:周、:月、:季度
我正在尝试编写一个活动记录.count语句,它可以为我获取具有优先级的唯一用户的计数,周期值等于:day,:week,:month,:quarter。
所以基本上我想知道有多少人在一段时间内对每一个值都有至少一个优先级。谢谢
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