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

0 postgresql activerecord ruby-on-rails ruby-on-rails-3

我的 Postgresql 数据库具有以下结构:

TABLE Orders
id (string)
userId (string)
prodId (string)
value (integer)
Run Code Online (Sandbox Code Playgroud)

这是一个数据示例:

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
Run Code Online (Sandbox Code Playgroud)

我想从 ActiveRecord 执行一个查询,对特定的所有值进行求和userId,因此 (a@a.aaa) 的查询将返回如下所示的 LIST:

prod1    1
prod2    9
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:由于反馈而重新措辞

Moh*_*ady 5

Order.where(userId: id).group(:prodId).sum(:value) # replace `:id` with your value
Run Code Online (Sandbox Code Playgroud)

这应该给你一个哈希值,就像这样

{1=>10, 2=>20, 5=>20}
Run Code Online (Sandbox Code Playgroud)

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