2016-08-23 11 views
4

上の値の合計を取得するにはどうすればこのようなPostgreSQLの上の1次元JSONBを持っている:は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) 

答えて

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