How to get the SUM of values on a JSONB column

And*_*rao 5 postgresql

I've got a 1-dimension JSONB on postgresql like this:

SELECT '{"a": 1, "b": 2, "c": 3}'::jsonb;
Run Code Online (Sandbox Code Playgroud)

How to get the SUM of values on a JSONB column? Like the sum of 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)
Run Code Online (Sandbox Code Playgroud)

Pat*_*ick 4

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

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