【问题标题】:ActiveRecord - Getting the sum of user scoreActiveRecord - 获取用户得分的总和
【发布时间】:2015-02-25 11:29:26
【问题描述】:

我有一个“ITEMS”数据库; ITEM_ID、OWNER_ID 和 VALUE。

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

我有一个“所有者”数据库;身份证、姓名

我想查找前 10 名最富有(富有)的人的姓名。我该怎么做?

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

【问题讨论】:

  • 我的数据库名称是“items”
  • 你在使用 MySql/Postgresql 吗?
  • 我正在使用 postgresql
  • 我还有另一个名字的表所有者。我需要得到前十名富豪的名字。
  • 我的查询无效?

标签: ruby-on-rails activerecord


【解决方案1】:

你可以这样做:

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

【讨论】:

【解决方案2】:

这是一个很长的解决方案,但它对我有用:

    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

【讨论】:

  • 决定的答案对谁没有用:这是我问题的确切答案,你否决了它?所以,请告诉我们你的完美答案。
猜你喜欢
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 2014-05-11
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多