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
]