我的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)
编辑:感谢反馈
答案 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
代表总和值。