Postgresql के IRC चैनल के एक दयालु व्यक्ति ने उत्तर खोजने और सही क्वेरी तैयार करने में मदद की। श्रेय वास्तव में उसका है, मेरा नहीं।
उन्होंने यह महसूस करने में मदद की कि तुलना के लिए एल्बम और स्रोत को सरणियों में जोड़ा जाना चाहिए। उदाहरण के लिए:
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;
मुझे नहीं पता कि यह करने का यह सबसे अच्छा तरीका है लेकिन यह काम करता है। सुझावों का स्वागत है।