我有以下结构和查询:
SELECT jsonb_path_query_array(jsonb '{"subscores": {"score_a": 2, "score_b": 3, "score_c": 4}}','$.subscores.* ? (@>2)');
返回:[3,4]
或
SELECT jsonb_path_query(jsonb '{"subscores": {"score_a": 2, "score_b": 3, "score_c": 4}}','$.subscores.* ? (@>2)');
返回(作为行):
3
4
是否有一种方法来构造我的查询,将对象子集作为单个行,单个字段值?即:
{"score_b": 3, "score_c": 4}
给出一组动态的分数.某些行将具有score_d, ...
等
发布于 2021-09-28 23:42:12
我认为您需要重新嵌套所有元素并将它们聚合回来:
SELECT jsonb_object_agg(key, value)
from (
select *
from jsonb_each(jsonb '{"subscores": {"score_a": 2, "score_b": 3, "score_c": 4}}' -> 'subscores')
) as p
where (p.value)::int > 2
https://dba.stackexchange.com/questions/300305
复制相似问题