Můžete použít json_array_elements
funkci pro vygenerování SETOF json
z pole:
SELECT name, json_array_elements(data) AS author
FROM publisher
Díky tomu jej můžete použít jako dílčí dotaz, takže můžete filtrovat, co chcete, např.:
SELECT DISTINCT author->>'author'
FROM (
SELECT name, json_array_elements(data) AS author
FROM publisher
) t
WHERE t.author->>'type' = 'Novel';
Všimněte si, že pokud máte v této tabulce mnoho řádků, výkon takových dotazů (alespoň pro aktuální verzi 9.3) bude opravdu špatný. Doporučil bych vám normalizovat data do tabulek.