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

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

相关推荐
段一凡-华北理工大学11 小时前
AI推动工业智能化转型~系列文章07:分类与诊断算法体系:故障识别的完整工具箱
数据库·人工智能·算法·机器学习·分类·数据挖掘·高炉炼铁智能化
DBA_G12 小时前
南大通用GBase HD数据平台讲解
数据库
foolishlee12 小时前
Neon wal日志处理流程
数据库
星马梦缘12 小时前
数据库 事务管理 专项作战记录
数据库
名字还没想好☜12 小时前
Python concurrent.futures 实战:用 ThreadPoolExecutor 并发处理 + as_completed 收结果
数据库·python·php·并发
空杆推不起12 小时前
穿透数据库 JOIN 核心:语法分类、底层算法、生产优化与高频坑点全解析
数据库·oracle
xqqxqxxq13 小时前
MySQL 数据类型笔记
数据库·笔记·mysql
夜郎king13 小时前
SpringBoot+PostgreSQL + 硅基流动大模型从零搭建 Text-to-SQL 智能问答系统
spring boot·postgresql·text-to-sql·llm大模型
Logintern0913 小时前
理解MySQL数据库的“事务与锁”
数据库·mysql
朱容zr33313314 小时前
为什么推荐使用自增主键?使用UUID作为主键的优缺点是什么?
java·运维·数据库·后端·mysql·面试·性能优化