我有一个" ITEMS"数据库由; ITEM_ID,OWNER_ID和VALUE。
拥有者可以拥有无限量的物品。一个项目只能有一个所有者。
我有一个"所有者"数据库由; ID,NAME
我想找到前十名最富裕(富裕)人的名字。我怎么能这样做?
首先,我需要对owner_id的值求和;而不是与其他人比较?
答案 0 :(得分:0)
以下是您可以做的事情:
Item.group(:owner_id) # grouping Items by owner id
.select("SUM(value) as sum") # summing values of each group
.order("sum DESC") # ordering resulting records by the sum value
.limit(10) # giving the top 10 records
答案 1 :(得分:-1)
这是一个很长的解决方案,但它对我有用:
toplist = []
all_owners = Owner.all
all_owners.each do |owner|
name = Owner.find(owner).name
owner_value = Item.where(owner_id: owner).sum(:value)
toplist << [owner_value,name]
end
@top10 = toplist.sort.last(10).reverse