如何获取 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);
我在 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);