Rails&活动记录:分组后获取列的平均值

时间:2016-09-14 20:47:13

标签: ruby-on-rails ruby activerecord

我有一个表user_keywords:belongs_to:keywords。 user_keywords有一列keyword_id,user_id和relevant_score(float)。

关键字表格中包含“名称”列。

  1. 我想通过keyword_id对所有user_keywords进行分组。
  2. 我想取每个群组的relative_score
  3. 的平均值
  4. 我想按最高相关性分数对小组进行排序
  5. 我想从组中返回关键字的名称,按最高相关性分数排序。
  6. 查询此问题的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

Keyword.joins(:user_keywords)
.select('keywords.name, avg(user_keywords.relevance_score) as score')
.group('keywords.name')
.order('score DESC')
.map(&:name)