Среднее количество записей в день в день за час дня - PullRequest
1 голос
/ 31 марта 2020

В настоящее время я работаю над приложением, в котором мне нужно получать среднее количество заказов в неделю в день в час дня, и мой код такой:

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 gem

Но это только подсчет результатов. как я могу получить среднее значение?!

1 Ответ

1 голос
/ 01 апреля 2020

Среднее значение набора чисел - это просто сумма чисел, деленная на общее количество значений в наборе.

Если ваша цепочка методов возвращает ha sh, где значения являются целыми числами, то это должно быть просто:

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

Возможно, вы захотите округлить его до 2 десятичных знаков

avearge.round(2)
=>0.16

Не думаю, что вы действительно хотите это сделать .group_by_hour_of_day(:created_at, format: "%-l %P") в той же цепочке, но, вероятно, отдельная цепочка вызовов для этого, но я не уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...