Помогите с сортировкой записей в Ruby on Rails - PullRequest
2 голосов
/ 23 декабря 2010

У меня есть таблица оценок, которая содержит два столбца: user_id и score

user_id счет
1 200
1 120
1 230
2 300
2 345
3 100
3 40
4 350
4 500
......

Score.order('score DESC').limit(3) перечисляет 3 лучших результата. Вместо этого, как бы я получил 3 верхние оценки, где каждый пользователь получает только одно место в списке (их самая высокая оценка).

Высшие оценки из приведенной выше таблицы будут:

user_id: 4 балла: 500
user_id: 2 балла: 345
user_id: 1 оценка: 230

Спасибо!

Тим

Ответы [ 2 ]

6 голосов
/ 23 декабря 2010

Вы должны быть в состоянии сгруппировать ваш запрос:

Score.order('score DESC').group('user_id').limit(3)
2 голосов
/ 23 декабря 2010
Score.all(:order => 'score DESC', :limit => 3, :group => :user_id)

С новым Арелем:

Score.group(:user_id).order('score DESC').limit(3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...