【问题标题】:ERROR IN SQL QUERY for group by分组依据的 SQL QUERY 错误
【发布时间】:2014-09-02 17:35:00
【问题描述】:

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

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

但我收到错误:

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

【问题讨论】:

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

标签: sql oracle group-by


【解决方案1】:

您不能在 Oracle 中的 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;

【讨论】:

    【解决方案2】:

    你不能按别名分组,试试这个:

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

    【讨论】:

      猜你喜欢
      • 2023-01-10
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      相关资源
      最近更新 更多