如何获取 JSONB 列上的值的总和

How to get the SUM of values on a JSONB column

我在 postgresql 上有这样一个一维 JSONB:

SELECT '{"a": 1, "b": 2, "c": 3}'::jsonb;

如何获取 JSONB 列值的总和? 比如1+2+3之和?

PostgreSQL 有 jsonb_object_keys 函数,但我一直在寻找类似 "jsonb_object_values" 的东西(我知道这个函数不存在)

# select jsonb_object_keys( '{"a": 1, "b": 2, "c": 3}'::jsonb );
 jsonb_object_keys 
-------------------
 a
 b
 c
(3 rows)

jsonb_each_text() 函数将一组 JSON 对象扩展为 (key, value) 格式的行。由于它 returns 一组行,您应该将它用作行源。由于它 returns 数据采用 text 格式,您应该在进一步处理之前将其转换为适当的类型。

SELECT sum(v::integer)
FROM jsonb_each_text('{"a": 1, "b": 2, "c": 3}'::jsonb) j(k,v);