You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中合并JSON实体并对重复键值求和的实现方法咨询

解决PostgreSQL中合并多个JSON对象并对相同键值求和的问题

嘿,这个需求完全可以通过PostgreSQL原生的JSON函数组合实现,不用找专门的合并求和函数,我给你直接上解决方案和细节解释~

核心思路

我们需要先把每个JSON对象拆成单独的键值对行,按键分组求和,最后再重新聚合成一个完整的JSON对象。

具体SQL实现

假设你的表名为music_collection(如果不是,替换成你实际的表名即可):

如果data列是json类型

SELECT json_object_agg(key, sum(value::numeric)) AS aggregated_data
FROM music_collection,
     json_each_text(data);

如果data列是jsonb类型(PostgreSQL推荐使用,性能更优)

SELECT jsonb_object_agg(key, sum(value::numeric)) AS aggregated_data
FROM music_collection,
     jsonb_each_text(data);

代码逐段解释

  • json_each_text(data) / jsonb_each_text(data):把每行的JSON对象拆分成多行记录,每行包含一个key(比如vinyl、cd)和对应的value(字符串格式的数字)
  • sum(value::numeric):将字符串类型的value转换为数值后,按key分组求和
  • json_object_agg(...) / jsonb_object_agg(...):把分组后的键和求和结果重新聚合为一个完整的JSON对象

结果验证

用你提供的示例数据运行上述SQL,会精准得到你想要的结果:
{"vinyl": 2, "cd": 5, "tape": 13, "mp3": 2}

内容的提问来源于stack exchange,提问作者Didiergm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:29:10