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
相关推荐
a587694 小时前
Oracle数据库体系结构深度解析:从内核到应用的理论全景
数据库·oracle
高溪流4 小时前
1.MySql概念讲解 及 MySql安装教程
数据库·mysql
语落心生5 小时前
深入doris查询计划以及io调度(四)存储引擎架构
数据库
蓝银草同学5 小时前
MySQL SQL语法详解:带注释的实用示例
前端·数据库
语落心生5 小时前
深入doris查询计划以及io调度(三)查询执行协调器QE
数据库
Hui Baby5 小时前
saga json文件阅读
java·前端·数据库
此生只爱蛋5 小时前
【Redis】RESP协议和库的安装
数据库·redis·缓存
数据库知识分享者小北5 小时前
免费体验《自建 MySQL 迁移至 PolarDB 分布式 V2.0》
数据库·分布式·mysql·阿里云·云原生·polardb
电商API_180079052477 小时前
淘宝商品评论数据抓取指南|API调用演示
大数据·数据库·人工智能·数据分析·网络爬虫
睿思达DBA_WGX7 小时前
Python 程序设计讲义(69):面向对象程序设计——类的定义与使用
数据库·python