如何在JSONB列上获取值的SUM

时间:2016-08-23 13:35:30

标签: postgresql

我在postgresql上有一个一维的JSONB,如下所示:

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

如何在JSONB列上获取值的SUM? 喜欢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)

1 个答案:

答案 0 :(得分:3)

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);