Измените среднее сгруппированное вычисление для таблицы

#ruby-on-rails #postgresql #activerecord

#ruby-on-rails #postgresql #activerecord

Вопрос:

быстрый вопрос, потому что я схожу с ума по этой проблеме. У меня есть таблица, в которой я сохраняю много аналитических данных, и я должен поместить эти данные в таблицу.

Каждая запись имеет эту структуру:

 id: 1,
user_id: 4,
store_id: 490,
company_id: 1,
completed_courses_percentage: 87
  

На данный момент я группирую пользователя по компаниям, а затем использую метод average для создания таблицы со средним процентом пройденного курса, сгруппированным по компаниям.

UserActivity.group(:company_id).average(:completed_courses_percentage)

Если у меня есть три человека для компании, а средние значения равны 0, 50 и 100, общее среднее значение теперь составляет 50%.

Кстати, мне нужно изменить способ вычисления этого среднего значения: я должен вычислить среднее значение людей, принадлежащих к компании с completed_courses_percentage> 70.

Я пытаюсь использовать

 UserActivity.group(:company_id).having("completed_courses_percentage > 70")
  

но результат равен 0.

Ответ №1:

Вы можете попробовать это.

 UserActivity.where("completed_courses_percentage > 70").group(:company_id).average(:completed_courses_percentage)
  

P.S: Не пробовал это.