给定一个包含json对象的列,如何使用sql基于键对它们求和?
Table 3
-------
id, values
1, {"A": 10, "B": -5}
2, {"A": 20}
3, {"A": -15, "B": -5}
4, {"A": -10, "C": 77}
字符串
此外,按另一个表关系对总和重新分组
Table1 has many Table3.
Table1 <-------- Table2 --------> Table 3
Table 1
-------
id
1
2
Table 2
-------
id, table1_key, table3_key
1, 2, 3
2, 1, 4
型
测试结果:
Table 1 sums:
1, {"A": 5, "B": -5} # only sum of Table 3 id=2 and id=3
2, {"A": 0, "B": -5, "C": 77} # only sum of Table 3 id=1 and id=4
型
2条答案
按热度按时间w6lpcovy1#
您可以首先通过聚合执行求和,然后使用
jsonb_object_agg
将结果组合到单个JSON对象中:字符串
See fiddle
3qpi33ja2#
为此使用
jsonb_each_text()
和必要的强制转换:字符串
工作fiddle