Postgresql 计算嵌套jsonb数组中项的总和
因此,我有一个Postgres DB表'purchases',其中有'id'和'receive'列id'是主int列,“receive”列中的值是jsonb,可以如下所示:Postgresql 计算嵌套jsonb数组中项的总和,postgresql,for-loop,sum,jsonb,Postgresql,For Loop,Sum,Jsonb,因此,我有一个Postgres DB表'purchases',其中有'id'和'receive'列id'是主int列,“receive”列中的值是jsonb,可以如下所示: { "shop_name":"some_shop_name", "items": [ { "name": "foo", "spent": 49, &q
{
"shop_name":"some_shop_name",
"items": [
{
"name": "foo",
"spent": 49,
"quantity": 1
},
{
"name": "bar",
"price": 99,
"quantity": 2
},
{
"name": "abc",
"price": 999,
"quantity": 1
},
...
]
}
收据中可以有不同数量的项目
最后,我需要编写一个查询,以便生成的表包含表中每个购买的所有栏上的购买id和花费金额,如下所示:
身份证件
花费
1.
198
..
...
您可以使用横向连接和
jsonb_数组_元素
函数从receipt
列中取消对项的测试,如:
SELECT p.id, SUM((item->>'price')::NUMERIC)
FROM purchases p,
LATERAL jsonb_array_elements(p.receipt->'items') r (item)
GROUP BY p.id
还可以添加where条件,例如:
WHERE item->>'name' = 'bar