目前,我正在开发一个应用,该应用需要每天每天每小时获取每周平均订单数,而我的代码就是这样
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宝石
但这只是计算结果。我如何获得平均值?!
答案 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")
,但是可能不希望在同一链中执行此操作,但是我不确定。