按 ID 分组并对行求和的 ActiveRecord 查询

ActiveRecord query that groups by ID and sums rows

我的 Postgresql 数据库有这样的结构:

TABLE Orders
id (string)
userId (string)
prodId (string)
value (integer)

这是一个数据示例:

id      userId      prodId    value
1       a@a.aaa     prod1     5
2       b@b.bbb     prod1     -1
3       a@a.aaa     prod1     -4
4       a@a.aaa     prod2     9

我想从 ActiveRecord 进行查询,对特定 userId 的所有值求和,因此 (a@a.aaa) 的查询将 return 像这样的 LIST :

prod1    1
prod2    9

我的第一个方法是这个,但它不起作用:

orderList = Orders.select("SUM(orders.amount) AS num_prods").where((:userId => HERE_USER_ID).group(:prodId)

编辑: 由于反馈

改写
Order.where(userId: id).group(:prodId).sum(:value) # replace `:id` with your value

这应该给你一个散列,就像这样

{1=>10, 2=>20, 5=>20}

1,2,5代表产品id,值10,20,20代表总和值。