diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml index d8d4c3c53ef..b3cfbc93582 100644 --- a/doc/src/sgml/queries.sgml +++ b/doc/src/sgml/queries.sgml @@ -1162,7 +1162,7 @@ SELECT product_id, p.name, (sum(s.units) * p.price) AS sales PostgreSQL also supports the syntax GROUP BY ALL, which is equivalent to explicitly writing all select-list entries that - do not contain either an aggregate function or a window function. + do not contain either an aggregate function referring to the same query level or a window function. This can greatly simplify ad-hoc exploration of data. As an example, these queries are equivalent: diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index 09b6ce809bb..8d5a751af7e 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -862,7 +862,8 @@ GROUP BY { ALL | [ ALL | DISTINCT ] grouping_elem grouping_elements provided is equivalent to writing GROUP BY with the numbers of all SELECT output columns that do not - contain either an aggregate function or a window function. + contain either an aggregate function referring to the same query level or + a window function. diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index 881fba2e7b5..2f7333e6786 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -2817,9 +2817,7 @@ transformGroupClause(ParseState *pstate, List *grouplist, bool groupByAll, /* * Likewise, TLEs containing window functions are not okay to add - * to GROUP BY. At this writing, the SQL standard is silent on - * what to do with them, but by analogy to aggregates we'll just - * skip them. + * to GROUP BY, and the SQL standard directs us to skip them. */ if (pstate->p_hasWindowFuncs && contain_windowfuncs((Node *) tle->expr))