2016-09-14 2 views
0

테이블에 user_keywords which : belongs_to : keywords가 있습니다. user_keywords에는 keyword_id, user_id 및 relevance_score (float) 열이 있습니다.Rails & Active Record : 그룹화 후 컬럼의 평균값을 얻으십시오.

키워드 표에 '이름'열이 있습니다.

  1. 모든 user_keywords를 keyword_id로 그룹화하고 싶습니다.
  2. 는 내가 가장 관련 항목 별 정렬, 그룹에서 키워드의 이름을 반환 할 점수
  3. 내가 가장 관련성에 의해 그룹을 정렬하려면 해당 그룹 'relevance_score의 각각의 평균을 먹고 싶어 .

이 질문에 가장 효율적인 방법은 무엇입니까?

답변

1

이 시도 : 최고

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

은, 마치 마법처럼 작동합니다. 감사! –

관련 문제