让我们说在我的rails应用程序中,我有50个不同的Topics
,每个都标有topic_id
。我们还要说,以下查询会返回50个帖子,并从每个帖子中选择topic_id
。
Post.where(id: something).select(:topic_id)
如何排名最常出现在此查询中的前5 topic_ids
?
答案 0 :(得分: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数组。