Andrey Borodin <amborodin86@gmail.com> writes: > I saw a thread in a social network[0] about GROUP BY ALL. The idea seems useful.
Isn't that just a nonstandard spelling of SELECT DISTINCT?
In a pure relational system, yes; but since Postgres allows duplicate rows, both in actual table data and in intermediate and final result sets, no. Although I'm pretty sure no aggregates other than count() are useful - any other aggregate would always just combine count() copies of the duplicated value in some way.
What would happen if there are aggregate functions in the tlist? I'm not especially on board with "ALL" meaning "ALL (oh, but not aggregates)".
The requested behaviour can be accomplished by an invocation something like:
select (t).*, count(*) from (select (…field1, field2, …) as t from …tables…) s group by t;
So we collect all the required fields as a tuple, group by the tuple, and then unpack it into separate columns in the outer query.