Một người tốt bụng từ kênh IRC của Postgresql đã giúp tìm ra câu trả lời và đưa ra câu hỏi chính xác. Tín dụng thực sự là của anh ấy, không phải của tôi.
Anh ấy đã giúp nhận ra rằng các album và srcs nên được thêm vào các mảng để so sánh. Ví dụ:
SELECT array_agg(rep_id), count(*) AS ct
FROM (SELECT rep_id,
data->>'background' as background,
array_agg(o->>'album' order by o->>'album') as albums,
array_agg(o->>'src' order by o->>'album') as srcs
FROM reports r,
json_array_elements(r.data->'objects') o
GROUP BY rep_id) s
GROUP BY background, albums, srcs
ORDER BY count(*) DESC
LIMIT 5;
Tôi không biết liệu đây có phải là cách tốt nhất để làm điều đó hay không nhưng nó có hiệu quả. Đề xuất được hoan nghênh.