PostgreSQL:JSON嵌套元素的SUM?
问题描述:
我有一个看起来像这样的记录:PostgreSQL:JSON嵌套元素的SUM?
{
"id": 93824701,
"lines": [
{"number": 1, "unit_price": 9.77},
{"number": 2, "unit_price": 8.36}
]
}
从查询:
select * from sales where sale @> '{"id": 93824701}'::jsonb;
如何计算所有unit_prices
元素的总和(在SQL),这样结果会是18.13
?
答
JSON不是SQL的一部分,PostgreSQL只是为它提供了一些美味的奖励。将结构化数据存储在普通表中而不是JSON结构中,可以避免将来出现很多问题。
回答这个问题,希望这个小例子可以帮助:
select sum((value->'unit_price')::text::numeric) from jsonb_array_elements('{
"id": 93824701,
"lines": [
{"number": 1, "unit_price": 9.77},
{"number": 2, "unit_price": 8.36}
]
}'::jsonb->'lines');
好运。
http://blog.2ndquadrant.com/postgresql-anti-patterns-unnecessary-jsonhstore-dynamic-columns/ –