У нас есть модель TransactionHistory с меткой времени для каждой транзакции по компании от пользователя,
Я хочу установить средний почасовой объем транзакций на пользователя, а также средние ежедневные и еженедельные активные часы транзакций.
Я пытался выполнить подзапрос, а затем определял области, но когда я пытался усреднить агрегированные активные часы, я не мог получить рельсы для подзапроса?
В моей МОДЕЛИ у меня есть следующая область действия, чтобы сгруппировать счет активности поthe hour
scope :activity_by_hour, -> (_current_company,_user) {select("date_trunc('day',created_at) AS this_day , date_trunc('hour',created_at) AS this_hour, count(created_at) AS work_done").where("user_id =#{_user} AND company_id = #{_current_company } ").order("this_day,this_hour").group(" this_day , this_hour" )}
Возвращает объект с общим итогом в час.
Я хотел бы сложить это по дням и взять среднее значение. Затем СЧИТАЙТЕ активные часы, сгруппируйте по неделям и усредните это,так что в моем контроллере
@total_by_hour=TransactionHistory.weekly_hours(session[:current_company],@user.id)
@avg=TransactionHistory.average(work_done: @total_by_hour)
Это терпит неудачу, как и все мои попытки создать подзапрос в активной записи rails, поскольку он объединяет sql в одну, однако мне удалось добиться результата путем анализаЗатем Json суммирует JSON, но это неправильно, я должен быть в состоянии выполнить его в SQL, а не анализировать результаты?
Tего работы для меня
@avg_hours=TransactionHistory.select(" (floor(extract('epoch' from created_at) / 3600) * 3600) as this_interval, COUNT(id) AS work_done").where(" company_id=#{session[:current_company]} AND user_id = #{@user.id} ").group(:this_interval).as_json
@avg_work=@avg_hours.sum { |x| x["work_done"] } / @avg_hours.size
Однако, когда я пытаюсь установить счетчик активных часов, я не могу разобрать JSON или сгруппировать его, я получаю одну большую запись JSON.
Должен быть более эффективныйи элегантное решение?я должен просто повторно проанализировать ежечасный JSON, чтобы группировать по неделям?