PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Interroger des combinaisons de JSON renvoie des résultats impairs

Une personne aimable du canal IRC de Postgresql a aidé à trouver la réponse et à élaborer la bonne requête. Le crédit est en fait le sien, pas le mien.

Il a aidé à réaliser que les albums et les srcs devaient être ajoutés aux tableaux à des fins de comparaison. Par exemple :

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;

Je ne sais pas si c'est la meilleure façon de faire mais ça marche. Les suggestions sont les bienvenues.