实例3:按部门统计工资人数
/*
實(shí)例3:按部門(mén)統(tǒng)計(jì)工資人數(shù)
可能的sql
select deptno from dept; 查出所有的部門(mén)號(hào) 光標(biāo)1
select sal from emp where deptno= 光標(biāo)1中的值
*/
set serveroutput on
declare
? --定義部門(mén)光標(biāo)
? cursor dcorsor is select deptno from dept;
? pdno dept.deptno% TYPE;--保存部門(mén)號(hào)
? --定義某部門(mén)下的員工光標(biāo)
? cursor cemp(dno number) is select sal from emp where deptno = dno;
? psal emp.sal% TYPE;--保存員工薪水
? --計(jì)數(shù)器
? count1 number;--6000
? count2 number;--3000~6000
? count3 number;--<3000
? psalTotal number;--工資總額
begin
? --獲取部門(mén)號(hào)
? open dcorsor;
? loop
??? --取部門(mén)
??? 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;
??? --取該部門(mén)中的員工
??? open cemp(pdno);
????? loop
??????? --取一個(gè)員工
??????? 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;--完成一個(gè)部門(mén)
???
??? --保存結(jié)果
??? insert into msg1 values(pdno, count3,count2,count1, psaltotal);
??? commit;
???
? end loop;
? close dcorsor;
?
? dbms_output.put_line('完成');
end;
/
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的实例3:按部门统计工资人数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为员工长工资。从最低工资调起每人长10%
- 下一篇: 使用光标查询10部门的员工姓名和工资,并