PostgreSQL的jsonb_object_agg函数的两种用法

1.直接聚合成json格式

sql 复制代码
CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    category TEXT,
    name TEXT,
    price NUMERIC
);
CREATE TABLE
Time: 7.595 ms
INSERT INTO products (category, name, price) VALUES
('Electronics', 'Laptop', 1200.00),
('Electronics', 'Smartphone', 800.00),
('Apparel', 'T-Shirt', 25.00),
('Apparel', 'Jeans', 75.00),
('Electronics', 'Headphones', 150.00);
INSERT 0 5
Time: 2.154 ms
SELECT
    category,
    jsonb_object_agg(name, price) AS products_detail
FROM products
GROUP BY category;
  category   |                         products_detail                         
-------------+-----------------------------------------------------------------
 Electronics | {"Laptop": 1200.00, "Headphones": 150.00, "Smartphone": 800.00}
 Apparel     | {"Jeans": 75.00, "T-Shirt": 25.00}
(2 rows)

Time: 0.378 ms

2.将每行记录构造成一个 jsonb 对象,然后用 jsonb_agg 聚合为数组

sql 复制代码
SELECT
    category,
    
    jsonb_agg(jsonb_build_object('name', name, 'price', price)) AS products_array
FROM products
GROUP BY category;
  category   |                                                      products_array                                                      
-------------+--------------------------------------------------------------------------------------------------------------------------
 Electronics | [{"name": "Laptop", "price": 1200.00}, {"name": "Smartphone", "price": 800.00}, {"name": "Headphones", "price": 150.00}]
 Apparel     | [{"name": "T-Shirt", "price": 25.00}, {"name": "Jeans", "price": 75.00}]
(2 rows)

Time: 0.438 ms
相关推荐
ClouGence2 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
先吃饱再说19 小时前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils19 小时前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend1 天前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶1 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung1 天前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql
parade岁月1 天前
MySQL JOIN解析:朴实无华但食之有味
数据库·后端
用户3169353811831 天前
MySQL服务无法启动问题解决全记录
数据库
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
倔强的石头_2 天前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库