G-3182: Always specify column names instead of positional references in GROUP BY clauses.
Blocker
Reliability
Restriction
Oracle Database 23c
Reason
If you use a numeric literal in the group by clause in an Oracle Database prior to version 23c, then this literal is not required. It is simply a constant.
Starting with Oracle Database 23c, it is possible to use a literal in the group by clause to refer to a column name in the select list. However, this only works if the group_by_position_enabled parameter is set to true. In any case, it is not convenient for the readers of the code to have to count the columns in the select list to know how the result is grouped.
Since the meaning of a literal depends on the configuration and database version, the intention is unclear and might lead to an incorrect result.
Example (bad)
1 2 3 4 5 | |
Example (good)
1 2 3 4 5 | |