PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'esecuzione di query su combinazioni di JSON restituisce risultati dispari

Una persona gentile del canale IRC di Postgresql ha aiutato a trovare la risposta ea creare la domanda corretta. In realtà il merito è suo, non mio.

Ha aiutato a capire che gli album e le src dovrebbero essere aggiunti agli array per il confronto. Ad esempio:

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;

Non so se questo è il modo migliore per farlo, ma funziona. I suggerimenti sono i benvenuti.