SQL QUERY中的错误,用于分组依据

bha*_*anu 0 sql oracle group-by

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

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

但我收到错误:

ORA-00904:"年龄":标识符无效

Gor*_*off 5

您不能group by在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;
Run Code Online (Sandbox Code Playgroud)