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 标准的持续跟进。

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

相关推荐
m0_639906942 分钟前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
时间售卖铺1 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw1 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社2 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙3 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain3764 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02144 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川4 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组4 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw345 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql