【问题标题】:Trying to get a complicated count of unique users尝试获取复杂的唯一用户数
【发布时间】:2012-04-06 06:09:04
【问题描述】:

优先级属于用户。优先级可以有 4 个周期(枚举) - :day, :week, :month, :quarter

我正在尝试编写一个活动记录 .count 语句,以获取具有优先级的唯一用户的计数,该时间段的值等于 :day, :week, :month, :quarter。

所以基本上我想知道有多少人对每个时期的这些值至少有一个优先级。谢谢!

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:
    Priority.group('period').count('user_id', :distinct => true)
    

    应该为您提供用户计数的句点哈希。按期间分组是 count 返回哈希值而不是单个值的原因,并使计数不同可确保不会重复计算用户。

    检查解释计划,但要使查询速度相当快,您可能需要在 period 列上建立索引(可能是 [period, user_id] 索引)

    【讨论】:

    • 这实际上得到了优先级的计数,而不是用户的计数
    • 这是计算每个时期的不同 user_id 的数量。如果这与每个时期具有优先级的用户数量不同,那么我误解了您的数据模型。所需输入/输出数据的示例会有所帮助
    【解决方案2】:

    您需要在 4 个请求中执行此操作。每个时期一个。

    User.where(:priorities => :day).count
    User.where(:priorities => :week).count
    User.where(:priorities => :month).count
    User.where(:priorities => :quarter).count
    

    【讨论】:

    • 这不起作用,因为 :day, :week, :month, :quarter 值已分配给优先级[:period],而您的电话中没有提及
    • 您能否粘贴您的模型以格式化一个好的答案,因为我不了解您的架构。优先级是一个哈希?
    猜你喜欢
    • 2021-08-16
    • 2019-10-04
    • 1970-01-01
    • 2018-05-25
    • 2012-05-12
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多