Вы можете использовать боковое перекрестное соединение, чтобы создать массив для каждой строки и посмотреть, содержит ли он значения в [805,812,855]. Здесь я предполагаю, что вы хотите убедиться, что он содержит ВСЕ значения, а не ЛЮБОЕ из значений.
with data as (select * from (values
('{"color": true,"view": [184],"school":[805,812,855,856,857]}'::jsonb),
('{"color": true,"view": [184],"school":[805,812]}'::jsonb)
) as v(data))
SELECT school_arr @> '{805,812,855}'
FROM data
CROSS JOIN LATERAL (SELECT ARRAY(SELECT jsonb_array_elements_text(data -> 'school'))) d(school_arr)
;
?column?
----------
t
f
(2 rows)