G-3180: Always specify column names instead of positional references in ORDER BY clauses.
Major
Changeability, Reliability
Reason
If you change your select list afterwards the ORDER BY will still work but order your rows differently, when not changing the positional number. Furthermore, it is not comfortable to the readers of the code, if they have to count the columns in the SELECT list to know the way the result is ordered.
Example (bad)
1 2 3 4 5 6 | select upper(first_name) ,last_name ,salary ,hire_date from employee order by 4,1,3; |
Example (good)
1 2 3 4 5 6 7 8 | select upper(first_name) as first_name ,last_name ,salary ,hire_date from employee order by hire_date ,first_name ,salary; |