ActiveRecord - 获取用户分数的总和

时间:2015-02-25 11:29:27

标签: ruby-on-rails activerecord

我有一个" ITEMS"数据库由; ITEM_ID,OWNER_ID和VALUE。

拥有者可以拥有无​​限量的物品。一个项目只能有一个所有者。

我有一个"所有者"数据库由; ID,NAME

我想找到前十名最富裕(富裕)人的名字。我怎么能这样做?

首先,我需要对owner_id的值求和;而不是与其他人比较?

2 个答案:

答案 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