SQL查询分组依据时出错

SQL查询分组依据时出错,sql,oracle,group-by,Sql,Oracle,Group By,我想按部门编号和年龄选择平均工资,我使用了此查询 SELECT DEPARTMENT_NUMBER, ROUND((MONTHS_BETWEEN(SYSDATE, BIRTHDAY)) / 12) AS AGE, AVG(SALARY) FROM EMPLOYEE GROUP BY DEPARTMENT_NUMBER, AGE; 但我得到了一个错误: ORA-00904:“年龄”:无效标识符 您不能在Oracle中的“分组依据”中使用列别名。只需

我想按部门编号和年龄选择平均工资,我使用了此查询

SELECT 
    DEPARTMENT_NUMBER,
    ROUND((MONTHS_BETWEEN(SYSDATE, BIRTHDAY)) / 12) AS AGE,
    AVG(SALARY)
FROM 
    EMPLOYEE 
GROUP BY 
    DEPARTMENT_NUMBER, AGE;
但我得到了一个错误:

ORA-00904:“年龄”:无效标识符


您不能在Oracle中的“分组依据”中使用列别名。只需使用子查询:

SELECT DEPARTMENT_NUMBER, AGE, AVG(SALARY)
FROM (SELECT e.*, ROUND((MONTHS_BETWEEN(SYSDATE,BIRTHDAY))/12) AS AGE
      FROM EMPLOYEE
     ) e
GROUP BY DEPARTMENT_NUMBER, AGE;

无法按别名分组,请尝试以下操作:

    SELECT DEPARTMENT_NUMBER
           ,ROUND((MONTHS_BETWEEN(SYSDATE,BIRTHDAY))/12) AS AGE
           ,AVG(SALARY)
    FROM EMPLOYEE 
    GROUP BY DEPARTMENT_NUMBER, ROUND((MONTHS_BETWEEN(SYSDATE,BIRTHDAY))/12);

标记甲骨文。Oracle错误来自Oracle数据库。