编写一个PL⼀SQL块,输出所有比本部门平均工资高的员工 信息。

这个不会做哦~
2024-10-29 17:50:51
推荐回答(4个)
回答1:

declare
begin
for v_emp in(
select dept.dname,X.b,emp.ename,emp.sal
from emp
join (select deptno a,round(avg(sal),2) b
from emp
group by deptno) X
on emp.deptno=X.a
and emp.sal>X.b
join dept
on emp.deptno=dept.deptno
order by emp.deptno desc)
loop
dbms_output.put_line('部门名称为:'||v_emp.dname||';平均薪资为:'||v_emp.b||
';高于该部门平均工资的员工为:'||v_emp.ename||';该员工工资为:'||v_emp.sal);
end loop;
end;

回答2:

你这个查询是在一个表中吗?表信息也不表露出来.....
select * from 表 where sal>(select avg(sal) from 表 where 部门='A')
你把这条语句加到PL/SQL块中试试吧

回答3:

select * from emp where
sal > (select avg(sal) from emp
where dno in
(select distinct dno from emp)
group by dno)

很久没有用oracle了忘记了 EMP 的结构了 我这里是把部门号算在EMP里的 大体上应该就是我这个方法解决 你理解下思路 可能有语法错误 希望能帮到你

回答4:

SELECT *
FROM EMPLOYEES E
WHERE E.DEPARTMENT_ID= EMP.DEPARTMENT_ID
AND E.SALARY > (SELECT AVG(EMP.SALARY)
FROM EMPLOYEES EMP
WHERE EMP.DEPARTMENT_ID='abc');