, расширяя входные данные до нескольких строк ввода json, чтобы показать, как сгруппировать их по значениям, переносимым в шаблоне сглаживания
with rows_of_json as (
select parse_json(raw_json_string) as json
from values
('[ { "DATE": 20190910, "NAME": "Tom1" }, { "DATE": 20190504, "NAME": "Bob1" } ]'),
('[ { "DATE": 20190910, "NAME": "Tom2" }, { "DATE": 20190504, "NAME": "Bob2" } ]')
d(raw_json_string)
)
select array_agg(f.value:NAME::text) within group (order by f.value:DATE::number) as ordered_list
from rows_of_json j, lateral flatten (input=>j.json) f
group by f.seq;
дает:
ORDERED_LIST
[ "Bob2", "Tom2" ]
[ "Bob1", "Tom1" ]
Это сглаживает данные и использует seq внутри сглаживания для повторной группировки данных на основе строк, полученных из ..
Также сортировка данных на основе свойства в объекте, если вы хотите исходный порядок, то в приведенном выше контексте:
array_agg(f.value:NAME::text) within group (order by f.index) as ordered_list
дает:
ORDERED_LIST
[ "Tom2", "Bob2" ]
[ "Tom1", "Bob1" ]