sql >> Base de Datos >  >> RDS >> PostgreSQL

Consultar combinaciones de JSON devuelve resultados extraños

Una amable persona del canal IRC de Postgresql ayudó a encontrar la respuesta y a elaborar la consulta correcta. El crédito es en realidad suyo, no mío.

Ayudó a darse cuenta de que los álbumes y los src deberían agregarse a las matrices para comparar. Por ejemplo:

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;

No sé si esta es la mejor manera de hacerlo, pero funciona. Se aceptan sugerencias.