DeepSeek总结的PostgreSQL 19 即将引入的新功能GROUP BY ALL

原文地址

PostgreSQL 19 即将引入的新功能:GROUP BY ALL。以下是内容总结:


一、功能背景

  • 提交时间:2025年9月29日,由 Tom Lane 提交。
  • 功能说明GROUP BY ALL 是一种简化写法,自动将所有未包含聚合函数或窗口函数 的查询列添加到 GROUP BY 子句中。
  • 标准化:该语法已被 SQL 标准委员会接受,并已在其他数据库系统中存在。

二、使用示例

1. 基本用法:
sql 复制代码
-- 使用 GROUP BY ALL
SELECT relnamespace, relkind, COUNT(*) 
FROM pg_class 
GROUP BY ALL;

-- 等同于传统写法
SELECT relnamespace, relkind, COUNT(*) 
FROM pg_class 
GROUP BY relnamespace, relkind;

输出示例

复制代码
 relnamespace │ relkind │ count
──────────────┼─────────┼───────
           99 │ t       │    48
        13331 │ v       │    65
          ... │ ...     │   ...
2. 复杂查询示例(含连接和聚合):
sql 复制代码
SELECT
    n.nspname,
    c.relkind,
    COUNT(*) FILTER (WHERE c.relname ~ 'a'),
    ARRAY_AGG(DISTINCT relowner::regrole::text)
FROM
    pg_class c
    JOIN pg_namespace n ON c.relnamespace = n.oid
GROUP BY ALL
ORDER BY n.nspname, c.relkind;

输出示例

复制代码
      nspname       | relkind | count |   array_agg
--------------------+---------+-------+----------------
 information_schema | r       |     3 | {pgdba}
 pg_catalog         | i       |    98 | {pgdba}
 ...                | ...     |   ... | ...

三、功能特点

  1. 自动推断分组列 :自动将 SELECT 中所有非聚合、非窗口函数的列添加到 GROUP BY 列表。
  2. 排除聚合与窗口函数 :如 COUNT()ARRAY_AGG() 等不会被加入分组条件。
  3. 兼容复杂表达式:支持连接查询、条件过滤等复杂场景。
  4. 简化语法:减少重复编写列名,适用于快速数据探索。

四、总结

GROUP BY ALL 是 PostgreSQL 19 中一个实用的语法扩展,尤其适合快速数据探查和简化查询编写。虽然传统显式写法更明确,但新语法在保持逻辑清晰的同时减少了代码冗余,体现了 PostgreSQL 对现代 SQL 标准的持续跟进。

如果需要进一步了解该功能的具体限制或与其他数据库的兼容性,可参考原文中的讨论链接。

相关推荐
睡不醒男孩0308231 小时前
第二篇:深入探索开源数据库高可用:构建基于CLup的PostgreSQL生产级高可用与读写分离架构
数据库·postgresql·开源·clup
Micro麦可乐3 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
码农阿豪3 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
鼎讯信通4 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..4 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
cfm_29145 小时前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
真实的菜5 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python
你想考研啊5 小时前
mysql数据库导出导入
数据库·mysql·oracle
十年编程老舅6 小时前
Linux DRM:底层逻辑与实践架构
数据库·mysql
The Sheep 20237 小时前
Vue复习
linux·服务器·数据库