每天每小时的每周平均记录数

时间:2020-03-31 13:27:55

标签: ruby-on-rails ruby

目前,我正在开发一个应用,该应用需要每天每天每小时获取每周平均订单数,而我的代码就是这样

Spree::Order.group_by_day_of_week(:created_at, range: @start_date..@end_date, format: '%a').group_by_hour_of_day(:created_at, format: "%-l %P").count 

我正在使用groupdate宝石

但这只是计算结果。我如何获得平均值?!

1 个答案:

答案 0 :(得分:1)

一组数字的平均值仅是数字之和除以该组中值的总数。

假设您的方法链返回值是整数的哈希值,那么它应该很简单:

hash = Spree::Order
         .group_by_day_of_week(:created_at, range: @start_date..@end_date, format: '%a')
         .count

average = hash.values.sum.to_f / hash.count.to_f

您可能会或可能不想将整数转换为浮点数,但是您可能会想要。 如果您输入的数字如下:

 average == 0.15728715728715728

您可能希望将其舍入为两位小数

avearge.round(2)
=>0.16

我不认为您真的想在同一链中执行此.group_by_hour_of_day(:created_at, format: "%-l %P"),但是可能不希望在同一链中执行此操作,但是我不确定。