0

让我们说在我的Rails应用程序中,我有50个不同的Topics,每个标识为topic_id。我们还要说,以下查询返回50个帖子并从每个帖子中选择topic_id。选择(:属性)并按频率对它们排序

Post.where(id: something).select(:topic_id) 

那么如何做我的排名前5topic_ids最经常从该查询来呢?

回答

0

虽然有效,但可能会有更有效的方法来做到这一点 - 随时提出建议,我是新的!

[1,2,2,2,3,4,5,6,6,6,6].group_by{|x| x}.sort_by{|k,v| -v.size}[0..4][0..4].map{|arr| arr[0] } 

对这些值进行分组,按组的大小排序,然后从结果数组中提取topic_ids。结果是一个按频率排序的topic_ids数组。

相关问题