实例3:按部门统计工资人数
/*
實例3:按部門統(tǒng)計工資人數(shù)
可能的sql
select deptno from dept; 查出所有的部門號 光標1
select sal from emp where deptno= 光標1中的值
*/
set serveroutput on
declare
? --定義部門光標
? cursor dcorsor is select deptno from dept;
? pdno dept.deptno% TYPE;--保存部門號
? --定義某部門下的員工光標
? cursor cemp(dno number) is select sal from emp where deptno = dno;
? psal emp.sal% TYPE;--保存員工薪水
? --計數(shù)器
? count1 number;--6000
? count2 number;--3000~6000
? count3 number;--<3000
? psalTotal number;--工資總額
begin
? --獲取部門號
? open dcorsor;
? loop
??? --取部門
??? fetch dcorsor into pdno;
??? exit when dcorsor%notfound;
??? --初始化
??? count1 := 0;count2 := 0;count3 := 0;psalTotal :=0;
??? --select sum(sal) into psalTotal from emp where empno=pdno;
??? --取該部門中的員工
??? open cemp(pdno);
????? loop
??????? --取一個員工
??????? fetch cemp into psal;
??????? exit when cemp%notfound;
???????
??????? --判斷
??????? if psal <= 3000 then count3 := count3 + 1;
??????? ELSIF? psal >3000 and psal <= 6000 then count2 := count2 + 1;
??????? else? count1 := count1+ 1;
??????? end if;
??????? --工資總額
??????? psalTotal := psalTotal + psal;
????? end loop;
??? close cemp;--完成一個部門
???
??? --保存結(jié)果
??? insert into msg1 values(pdno, count3,count2,count1, psaltotal);
??? commit;
???
? end loop;
? close dcorsor;
?
? dbms_output.put_line('完成');
end;
/
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的实例3:按部门统计工资人数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为员工长工资。从最低工资调起每人长10%
- 下一篇: 长期不用的信用卡怎么处理最好 及时注销