Ce n'est pas seulement Oracle SQL, en fait je pense qu'il est conforme à la norme ANSI SQL (bien que je n'aie pas de référence pour cela). La raison est que la clause SELECT est logiquement traitée après la clause GROUP BY, donc au moment où le GROUP BY est fait, les alias n'existent pas encore.
Peut-être que cet exemple quelque peu ridicule aide à clarifier le problème et l'ambiguïté que SQL évite :
SQL> select job as sal, sum(sal) as job
2 from scott.emp
3 group by job;
SAL JOB
--------- ----------
ANALYST 6000
CLERK 4150
MANAGER 8275
PRESIDENT 5000
SALESMAN 5600