2016-09-14 7 views
0

私はテーブル「user_keywords」を持っています:belongs_to:keywords。 user_keywordsにはキーワードkeyword_id、user_id、relevance_score(float)の列があります。Rails&Active Record:グループ化した後のカラムの平均値を取得する

キーワードテーブルには「名前」という列があります。

  1. すべてのuser_keywordsをkeyword_idでグループ化したいとします。最高適合スコアでソート
  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

は、魔法のように動作します。ありがとう! –

関連する問題