Oracle:它在动态视图中出错

时间:2018-05-21 19:18:30

标签: oracle

我有两个表一个是员工,一个是部门。我正在创建动态视图,按工资对所有部门进行排名。视图应从Department和Employee中提取信息,按部门汇总工资,并按工资对部门进行排名。

{{1}}

这是我创建到目前为止,但它给了我一个错误

  

ORA-00979:不是GROUP BY表达式       00979. 00000 - "不是GROUP BY表达式"       *原因:
      *行动:       行错误:4列:9

这是我的代码

{{1}}

1 个答案:

答案 0 :(得分:0)

您的查询需要加入EMPLOYEES(以获得工资)到DEPARTMENT(以获取DEPARTMENT_NAME)。通过总结员工工资计算每个部门的总薪水,而不计算它们。 GROUP BY需要包含非聚合列。

然后,您需要按部门总薪资对部门进行排名。此查询对具有最高薪水= 1的部门进行排名。它使用左连接来满足没有员工的部门。

select department_id
       , department_name
       , total_salary
       , rank() over (order by total_salary desc) as dept_rank 
from (
     select  d.department_id
             , d.department_name
             , sum(e.SALARY)  as total_salary 
     from department d
          left join employees e
           on e.department_id = d.department_id 
      group by d.department_id
             , d.department_name
     )
/