Het is niet alleen Oracle SQL, ik geloof zelfs dat het voldoet aan de ANSI SQL-standaard (hoewel ik daar geen referentie voor heb). De reden is dat de SELECT-component logisch wordt verwerkt na de GROUP BY-clausule, dus op het moment dat de GROUP BY wordt uitgevoerd, bestaan de aliassen nog niet.
Misschien helpt dit ietwat belachelijke voorbeeld het probleem en de dubbelzinnigheid die SQL vermijdt te verduidelijken:
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