Saya memecahkan ini pada dasarnya dengan melakukan jsonb_array_elements()
seperti 'unnest()'-like pada array jsonb saya yang bersarang.
Dengan melakukan ini dalam subkueri, lalu memindai hasil tersebut menggunakan variasi kueri asli saya, saya dapat mencapai hasil yang saya inginkan.
Inilah yang saya dapatkan.
with dupe as (
select
json_document->>'Name' as name,
identifiers->'RecordID' as record_id
from (
select *,
jsonb_array_elements(json_document->'Identifiers') as identifiers
from staging
) sub
group by record_id, json_document
order by name
)
select * from dupe da where (select count(*) from dupe db where
db.record_id = da.record_id) > 1;