帮助在Ruby on Rails中对记录进行排序
我有一个包含两列的分数表: 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
谢谢!
蒂姆
您应该能够对查询进行分组:
Score.order('score DESC').group('user_id').limit(3)
Score.all(:order => 'score DESC', :limit => 3, :group => :user_id)
随着新的Arel:
Score.group(:user_id).order('score DESC').limit(3)