#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: Не пробовал это.