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