如何聚合JSONB PostgreSQL 10
我有一张带ID和jsonb列的桌子如何聚合JSONB PostgreSQL 10,postgresql,jsonb,postgresql-10,Postgresql,Jsonb,Postgresql 10,我有一张带ID和jsonb列的桌子 1, "{"a" : {"per" : 0.45, "number" : 1}}" 1, "{"b" : {"per" : 3.13, "number" : 7}}" 2, "{"a" : {"per" : 14.73, "number" : 33}}" 2, "{"b" : {"per" : 85.27, "number" : 191}}" 3, "{"a" : {"per" : 40.63, "number" : 91}}" 4, "{"a" : {"pe
1, "{"a" : {"per" : 0.45, "number" : 1}}"
1, "{"b" : {"per" : 3.13, "number" : 7}}"
2, "{"a" : {"per" : 14.73, "number" : 33}}"
2, "{"b" : {"per" : 85.27, "number" : 191}}"
3, "{"a" : {"per" : 40.63, "number" : 91}}"
4, "{"a" : {"per" : 1.79, "number" : 4}}"
4, "{"b" : {"per" : 2.68, "number" : 6}}"
需要按ID对值进行分组并获得此结果
1, "{"a" : {"per" : 0.45, "number" : 1}, "b" : {"per" : 3.13, "number" : 7}}"
2, "{"a" : {"per" : 14.73, "number" : 33}, "b" : {"per" : 85.27, "number" : 191}}"
3, "{"a" : {"per" : 40.63, "number" : 91}}"
4, "{"a" : {"per" : 1.79, "number" : 4}, "b" : {"per" : 2.68, "number" : 6}}"
有没有办法做到这一点?没有内置的聚合,但您可以轻松创建自己的聚合:
CREATE AGGREGATE jsonb_merge(jsonb)
(
SFUNC = jsonb_concat(jsonb, jsonb),
STYPE = jsonb
);
然后你可以做:
select id, jsonb_merge(the_jsonb_column)
from your_table
group by id
没有内置聚合,但您可以轻松创建自己的聚合:
CREATE AGGREGATE jsonb_merge(jsonb)
(
SFUNC = jsonb_concat(jsonb, jsonb),
STYPE = jsonb
);
然后你可以做:
select id, jsonb_merge(the_jsonb_column)
from your_table
group by id
效果很好。谢谢,很好用。非常感谢。