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
相关推荐
闪电悠米1 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
DIY源码阁2 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
浪客灿心3 小时前
项目篇:模块设计与实现
数据库·c++
流星白龙4 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
三十..5 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶5 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
努力努力再努力wz6 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
JdSnE27zv6 小时前
Qt 操作SQLite数据库
数据库·qt·sqlite
tedcloud1236 小时前
HyperFrames部署教程:用HTML生成MP4视频
前端·数据库·人工智能·html·音视频
布朗克1686 小时前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio