我有一个表“stock”,其中包含许多package_ids
package_id = 1
package_id = 3
package_id = 2
package_id = 3
package_id = 3
package_id = 4
package_id = 2
最优雅的方式是什么:
我已经一步一步地尝试过:
然而,这似乎并不是一条有效的道路。
答案 0 :(得分:5)
怎么样:
Stock.group(:package_id).count
它将返回一个散列,其中package_id为键,count为值:
{ package_id1: count1, package_id2: count2 ....}
答案 1 :(得分:4)
尝试使用此功能获得前三名'
Stock.select('package_id, count(*) as c').group(:package_id).order('c DESC').limit(3)