我有一个具有两个属性的模型(我只显示两个,因为只需要这两列)
我的模型
place_id ---------------------- user_id
1 -------------------------------- 1
1 ------------------------------ 2
1 ------------------------------ 2
3 ---------------------------------- 3
3 ------------------------------ 2
3 ---------------------------------- 3
3 ------------------------------ 1
我想按最大记录获取分组。基本上我想获取用户拥有最大记录的特定位置,例如 place_id 1 用户 2 具有最大结果,位置 3 用户 3 具有最大结果。
最佳答案
如果您首先指定一个地点,您可以这样做:
MyModel.where("place_id=?",place_id).
group("place_id,user_id").order("count(user_id) DESC").first
如果您想一次获得所有最大值,则删除 where 子句并遍历您的结果集,只获取每个不同 place_id 的第一条记录。或者,您可以在上面的语句中添加一个 distinct。是这样的吗?
MyModel.select("DISTINCT(place_id)").
merge(MyModel.group("place_id,user_id").order("count(user_id) DESC"))
祝你好运!
关于ruby-on-rails - maximum in group by 事件记录查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6468316/