PostgreSQL如何将分组统计查询结果转为指定结构的JSON对象
PostgreSQL 行转单JSON对象解决方案
你可以直接使用json_object_agg聚合函数实现需求,正确的查询语句如下:
SELECT json_object_agg(column, count) AS result_json FROM ( -- GROUP BY后column天然去重,无需额外加DISTINCT SELECT column, count(*) AS count FROM your_table_name GROUP BY column ) t;
说明
json_object_agg是PostgreSQL专门提供的JSON聚合函数,接收两个参数,第一个会作为JSON对象的键,第二个会作为对应的值,最终自动把所有聚合结果拼接为单个JSON对象,完全匹配你需要的{"id1":1, "id2":5}结构。- 如果你需要性能更优、支持后续JSON操作的jsonb类型返回值,直接把函数替换为
jsonb_object_agg即可。 - 你之前的写法使用
array_agg将每行结果聚合成数组后再转JSON,所以最终得到的是对象数组,和目标结构不符。
内容的提问来源于stack exchange,提问作者George Livanoss
相关产品推荐
相关产品推荐

