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

时间:2015-04-25 12:05:42

标签: ruby-on-rails ruby-on-rails-3 postgresql activerecord

我的Postgresql DB具有以下结构:

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)的查询将返回如下列表:

prod1    1
prod2    9

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

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

编辑:感谢反馈

1 个答案:

答案 0 :(得分:4)

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代表总和值。