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

PostgreSQL中如何在同查询内求和JSONB数组生成的虚拟列

解决方案

要把展开后的JSON数组数值求和并返回单行结果,直接用聚合函数SUM()配合jsonb_array_elements就能实现,还能按需调整小数分隔符格式:

修改后的查询语句

-- 格式化输出为逗号作为小数分隔符的格式
SELECT TO_CHAR(SUM((jsonb_array_elements((balance)::jsonb->'savings')->>'amount')::float), 'FM999999999,99') AS virtual_balance
FROM accounts 
WHERE id = 58117;

如果你的数据库区域设置默认支持逗号作为小数分隔符,也可以简化成:

SELECT SUM((jsonb_array_elements((balance)::jsonb->'savings')->>'amount')::float)::numeric(10,2) AS virtual_balance
FROM accounts 
WHERE id = 58117;

核心逻辑说明

  • jsonb_array_elements负责把savings这个JSON数组展开成多行记录
  • SUM()对这些行的amount数值进行聚合求和,直接得到单行结果
  • TO_CHAR()用来将求和后的数值格式化为带逗号小数分隔符的字符串,满足你要的162,25格式

执行后会得到预期结果:

virtual_balance
---------------
162,25

内容的提问来源于stack exchange,提问作者Ítalo Araújo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:22:07