Можете да използвате json_array_elements
функция за генериране на SETOF json
от масив:
SELECT name, json_array_elements(data) AS author
FROM publisher
Имайки това, можете да го използвате като подзаявка, така че да можете да филтрирате каквото искате, напр.:
SELECT DISTINCT author->>'author'
FROM (
SELECT name, json_array_elements(data) AS author
FROM publisher
) t
WHERE t.author->>'type' = 'Novel';
Само имайте предвид, че ако имате много редове в тази таблица, производителността на такива заявки (поне за текущата версия, 9.3) ще бъде наистина лоша. Бих ви препоръчал да нормализирате данните в таблици.