REsolving Средние значения дневной и недельной активности с использованием активного подзапроса rails или postgrsql? - PullRequest
0 голосов
/ 21 марта 2019

У нас есть модель 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, чтобы группировать по неделям?

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