我有两个表一个是员工,一个是部门。我正在创建动态视图,按工资对所有部门进行排名。视图应从Department和Employee中提取信息,按部门汇总工资,并按工资对部门进行排名。
{{1}}
这是我创建到目前为止,但它给了我一个错误
ORA-00979:不是GROUP BY表达式 00979. 00000 - "不是GROUP BY表达式" *原因:
*行动: 行错误:4列:9
这是我的代码
{{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
)
/