优先级属于用户。优先级可以有4个句点(enum) - :day,:week,:month,:quarter
我正在尝试编写一个活动记录.count语句,该句号可以获得具有优先级的唯一用户的计数,其中句点的值等于:day,:week,:month,:quarter。
基本上我想知道有多少人对这些期间的每个值至少有一个优先级。谢谢!
答案 0 :(得分:0)
您需要在4个请求中执行此操作。每个时期一个。
User.where(:priorities => :day).count
User.where(:priorities => :week).count
User.where(:priorities => :month).count
User.where(:priorities => :quarter).count
答案 1 :(得分:0)
Priority.group('period').count('user_id', :distinct => true)
应该为用户计数提供句点的哈希值。按句点分组是使count
返回哈希而不是单个值并使计数不同以确保用户不会被重复计算的原因。
检查解释计划但是为了使这个查询相当快,你可能想要一个关于周期列的索引(可能是[period,user_id]索引)