Een aardig persoon van het IRC-kanaal van Postgresql hielp bij het vinden van het antwoord en het opstellen van de juiste vraag. De eer is eigenlijk van hem, niet van mij.
Hij hielp beseffen dat de albums en src's ter vergelijking aan arrays moeten worden toegevoegd. Bijvoorbeeld:
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;
Ik weet niet of dit de beste manier is om het te doen, maar het werkt. Suggesties zijn welkom.