Hubert 'depesz' Lubaczewski:等待 PostgreSQL 19 – 新增 GROUP BY ALL

💡 原文英文,约600词,阅读约需3分钟。
📝

内容提要

2025年9月29日,Tom Lane 提交了补丁,新增了 GROUP BY ALL 功能,该功能自动将不含聚合或窗口函数的表达式加入查询的 groupClause,简化数据探索。此语法已被 SQL 标准接受,稳定性较高。

🎯

关键要点

  • 2025年9月29日,Tom Lane 提交了补丁,新增了 GROUP BY ALL 功能。

  • GROUP BY ALL 自动将不含聚合或窗口函数的表达式加入查询的 groupClause。

  • 此功能简化了数据探索,已被 SQL 标准接受,稳定性较高。

  • 该功能在某些其他数据库管理系统中已存在。

  • 标准未允许在 GROUP BY 中使用表达式,因此需要自行定义部分语义。

  • 示例查询展示了使用 GROUP BY ALL 的简化效果。

  • GROUP BY ALL 使查询处理更简洁,避免了冗长的显式列出所有字段。

  • 该功能同样适用于连接查询和更复杂的表达式。

🔎

延伸解读

GROUP BY ALL 的实用性

GROUP BY ALL 功能的引入,极大地简化了数据查询的语法,尤其是在处理复杂查询时。用户无需手动列出所有非聚合字段,减少了出错的可能性,提高了查询效率。

与其他数据库的比较

GROUP BY ALL 功能在一些其他数据库管理系统中已经存在,这表明 PostgreSQL 正在逐步与行业标准接轨。用户可以期待在不同平台间的操作一致性,提升了跨平台的学习和使用效率。

语法稳定性与风险

虽然 GROUP BY ALL 已被 SQL 标准接受,但由于标准未明确规定如何处理窗口函数,用户在使用时需谨慎,确保理解其语义,以避免潜在的查询错误。

延伸问答

GROUP BY ALL 功能的主要作用是什么?

GROUP BY ALL 功能自动将不含聚合或窗口函数的表达式加入查询的 groupClause,简化数据探索。

GROUP BY ALL 是什么时候被接受为 SQL 标准的?

GROUP BY ALL 功能在 2025年9月29日被 SQL 标准接受。

使用 GROUP BY ALL 的查询示例是什么?

示例查询为:select relnamespace, relkind, count(*) from pg_class group by all;

GROUP BY ALL 与传统 GROUP BY 的区别是什么?

GROUP BY ALL 使查询处理更简洁,避免了冗长的显式列出所有字段,而传统的 GROUP BY 需要手动列出所有字段。

GROUP BY ALL 功能在其他数据库管理系统中是否存在?

是的,GROUP BY ALL 功能在某些其他数据库管理系统中已存在。

GROUP BY ALL 语法的稳定性如何?

由于已被 SQL 标准接受,因此可以合理地相信其语法是稳定的。

🏷️

标签

➡️

继续阅读