Re: Extracting data from jsonb array?

Поиск
Список
Период
Сортировка
От Rob Sargent
Тема Re: Extracting data from jsonb array?
Дата
Msg-id 72f54672-ad66-0370-9128-206e49389b60@gmail.com
обсуждение исходный текст
Ответ на Re: Extracting data from jsonb array?  (Ken Tanzer <ken.tanzer@gmail.com>)
Ответы Re: Extracting data from jsonb array?
Список pgsql-general



OK, let me try asking again.  (I'm trying to actually get something that works.)  So given an example like this:

CREATE TEMP TABLE foo (
  id INTEGER,
  js  JSONB
);

INSERT INTO foo (id,js) VALUES (1,
'[
{"key":"r1kval","key2":"r1k2val"},
{"key":"r1kval2","key2":"r1k2val2"}
]');
INSERT INTO foo (id,js) VALUES (2,
'[
{"key":"r2kval","key2":"r2k2val"},
{"key":"r2kval2","key2":"r2k2val2"}
]');

Can anyone help me with a working query (preferably with the least cumbersome syntax possible!) that would return these values (the key2 values) as array text elements:

id     Agg_val
----  ------------------------
1     {r1k2val,r1k2val2}
2     {r2k2val,r2k2val}

(2 rows)


postgres=# select id, array_agg(fa) from (select id, (jsonb_array_elements(js)->'key') as fa from foo) g group by id order by id;
 id |          array_agg          
----+------------------------------
  1 | {"\"r1kval\"","\"r1kval2\""}
  2 | {"\"r2kval\"","\"r2kval2\""}
(2 rows)

I think the quotes are a fault of example data? 

Cumbersome is in the eyes of the beholder ;)

В списке pgsql-general по дате отправления:

Предыдущее
От: Ken Tanzer
Дата:
Сообщение: Re: Extracting data from jsonb array?
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: Extracting data from jsonb array?