Select distinct values by key from JSONB column

Viewed 75

Postgres v12.0

I have a table

data
{"a": "1", "b": "1"}
{"a": "2", "b": "1"}

And I'd like to retrieve a distinct list of keys and the set of values for each key

key values
a [ "1", "2" ]
b [ "1" ]

Not sure how to formulate a query to achieve those results.

1 Answers

here is one way:

select key , array_agg(distinct value) 
from table
join lateral (select * from json_each_text(datacolumn)) j on true 
group by key 

db<>fiddle here

Related