I have PostgreSQL 11.5 with something similar to this jsonb data:
[{"name":"$.publishedMonth", "value":"04"},{"name":"$.publishedYear","value":"1972"}]
[{"name":"$.publishedMonth", "value":"07"},{"name":"$.publishedYear","value":"2020"}]
My desired result is:
| id | publishedMonthYear |
|---|---|
| 1 | 04-1972 |
| 2 | 07-2020 |
SELECT b.field_value AS publishedMonthYear, COUNT(*)
FROM (SELECT *
FROM (SELECT (jsonb_array_elements(result) ::jsonb) - >> 'name' field_name,
(jsonb_array_elements(result) ::jsonb) - >> 'value' field_value,
FROM books
WHERE bookstore_id = '3') a
WHERE a.field_name in ('$.publishedMonth', '$.publishedYear')) b
GROUP BY b.field_value
Thank you in advance for any help