2016-09-14 41 views
0

我有一个表user_keywords其中:belongs_to:关键字。 user_keywords有一个column keyword_id,user_id和relevance_score(float)。Rails和活动记录:获得分组后的列的平均值

关键字表有一个'name'列。

  1. 我想通过他们的keyword_id将所有user_keywords分组。
  2. 我想利用各基团relevance_score的平均
  3. 我想排序最高相关团体得分
  4. 我要回从组关键字的名称,由最高相关程度排序。

什么是最有效的查询方式?

回答

1

试试这个:

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

真棒,就像一个魅力。谢谢! –