2014-09-02 56 views
0

我想按部門人數及年齡選擇平均工資,我用這個查詢誤差的SQL查詢組由

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

,但我得到的錯誤:

ORA-00904: "AGE": invalid identifier

+1

標籤甲骨文。 。 。 Oracle錯誤來自Oracle數據庫。 – 2014-09-02 17:37:19

回答

5

不能使用列中的別名爲group by。只需使用子查詢:

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; 
4

您不能按一個別名,試試這個:

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);