Use column alias in GROUP BY
Why does the alias not work in the GROUP BY clause?


Because these simply are the syntax rules. A column alias may be used in the ORDER BY clause but not in the GROUP BY clause. 

If you look at the syntax diagrams this becomes obvious:

The order by clause is defined as:

So after the ORDER BY an expression is allowed, a position (order by 1) or a c_alias which stands for "column alias".

The group by is defined as:



As you can see, no c_alias option after it, so you can't use a column alias. 

This is nothing special to Oracle though. This is how it was defined in the SQL standard.