Ruby on rails Rails查询:按一列分组,按另一列的和排序

Ruby on rails Rails查询:按一列分组,按另一列的和排序,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个型号采购历史记录。它有一列user\u id,另一列是amount。当任何用户购买任何东西时,它会存储购买的用户id和金额 user_id amount 1 10 2 20 1 20 现在我想做一个查询,它将根据用户id对用户进行分组,并根据该用户的总金额进行排序 因此,在这种情况下,查询应该返回如下内容 [{1 => 30}, {2 => 20}] 这应该行得通 (如果是PostgreSQL DB,如果有nil,则使用coa

我有一个型号
采购历史记录
。它有一列
user\u id
,另一列是
amount
。当任何用户购买任何东西时,它会存储购买的
用户id
金额

user_id  amount
1        10
2        20
1        20
现在我想做一个查询,它将根据用户id对用户进行分组,并根据该用户的总金额进行排序

因此,在这种情况下,查询应该返回如下内容

[{1 => 30}, {2 => 20}] 
这应该行得通 (如果是PostgreSQL DB,如果有nil,则使用
coalesce(amount,0)
,否则使用相应的DB方法将nil强制转换为0)

Hash[
  PurchaseHistory.select("user_id, SUM(coalesce(amount, 0)) as amount_sum").group(:user_id).order("amount_sum DESC").map do |row| 
    [row.user_id, row.amount_sum]
  end
]