SELECT e.kind, e.flag, count(*) AS n, round(sum(e.score)::numeric, 6) FROM docs d CROSS JOIN LATERAL jsonb_to_recordset(d.items) AS e(kind text, sub text, flag text, score float8) GROUP BY 1, 2 HAVING count(*) > 100 ORDER BY 1, 2