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
相关推荐
Forget_85501 分钟前
RHEL——NoSQL集群技术
数据库·nosql
wertyuytrewm21 分钟前
自动化与脚本
jvm·数据库·python
Hello.Reader23 分钟前
PySpark DataFrame 快速入门创建、查询、分组、读写、SQL 实战一篇讲透
数据库·sql·spark
qq_4176950526 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
只能是遇见29 分钟前
ERROR 1524 (HY000) Plugin ‘mysql_native_password‘ is not loaded
android·数据库·mysql
番茄去哪了31 分钟前
从0到1独立开发一个论坛项目(一)
java·数据库·oracle·maven
API开发36 分钟前
一个MCP操作所有的数据库
数据库·api·api接口·apisql·mcp·mcpserver·openclaw
zone7_1 小时前
008-01:RAG 入门-向量存储与企业级向量数据库 milvus
数据库·milvus
iMingzhen1 小时前
不想引入 Redis,我用一张 SQLite 表实现了消息队列
数据库·redis·ai·sqlite
冷小鱼1 小时前
Milvus 向量数据库完全指南:开源架构与生产级部署实战
数据库·开源·milvus