Ruby on rails 按ID分组并对行求和的ActiveRecord查询
我的Postgresql数据库具有以下结构:Ruby on rails 按ID分组并对行求和的ActiveRecord查询,ruby-on-rails,ruby-on-rails-3,postgresql,activerecord,Ruby On Rails,Ruby On Rails 3,Postgresql,Activerecord,我的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
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执行一个查询,对特定的用户ID
的所有值求和,因此(a@a.aaa)将返回如下列表:
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
表示总和值
这应该给你一个杂凑,就像这样
{1=>10, 2=>20, 5=>20}
键1,2,5
表示产品id,值10,20,20
表示总和值
这应该给你一个杂凑,就像这样
{1=>10, 2=>20, 5=>20}
键1,2,5
表示产品id,值10,20,20
表示总和值
这应该给你一个杂凑,就像这样
{1=>10, 2=>20, 5=>20}
键
1,2,5
表示产品id,值10,20,20
表示总和值。1。您可能想要订单
,而不是订单
。2.您的用户列名为userId
还是username
?您在示例数据和ActiveRecord查询中指示了不同的值。3.你有一个额外的(
在你的where
条件上。4.当你说“不起作用”时,发生了什么?谢谢,实际上我表达的不正确。请找到新的查询是您的模型名为Order
还是Orders
?是它的第一行类Order
?模型名为Orders,数据库表名为Orders。我知道我应该将其更改为单数。1.您可能想要Order
而不是Orders
。2.您的用户列名为userId
还是username
?您在示例数据和ActiveRecord查询中指示了不同的值。3.您在where
条件上有一个额外的(
)。4.当您说“不起作用”时,发生了什么?谢谢,实际上我表达的不正确。请找到新的查询是您的模型名为Order
还是Orders
?是它的第一行类Order
?模型名为Orders,数据库表名为Orders。我知道我应该将其更改为单数。1.您可能想要Order
而不是Orders
。2.您的用户列名为userId
还是username
?您在示例数据和ActiveRecord查询中指示了不同的值。3.您在where
条件上有一个额外的(
)。4.当您说“不起作用”时,发生了什么?谢谢,实际上我表达的不正确。请找到新的查询是您的模型名为Order
还是Orders
?是它的第一行类Order
?模型名为Orders,数据库表名为Orders。我知道我应该将其更改为单数。1.您可能想要Order
而不是Orders
。2.您的用户列名为userId
还是username
?您在示例数据和ActiveRecord查询中指示了不同的值。3.您在where
条件上有一个额外的(
)。4.当您说“不起作用”时,发生了什么?谢谢,实际上我表达的不正确。请查找新的查询是您的模型名为Order
还是Orders
?是它的第一行类Order
?模型名为Orders,数据库表名为Orders。我知道我应该将其更改为单数。