用PL/SQL语言编写一程序,实现按部门分段(6000以上、(6000,3000)、3000元以下)统计各工资段的职工人数、以及各部门的工资总额(工资总额中不包括奖金)
用PL/SQL语言编写一程序,实现按部门分段(6000以上、(6000,3000)、3000元以下)统计各工资段的职工人数、以及各部门的工资总额(工资总额中不包括奖金)
输出到一张表中
直接输出在屏幕上
答:
(1)输出到一张表中
create table salcount
(deptno number, --部门号
sg1 int, --3000以下的人数
sg2 int, – 3000~6000的人数
sg3 int, – 6000以上的人数
sumsal number—工资总额
);
declare
–定义两个游标保存结果
cursor c1 is select distinct deptno from dept;
cursor c2(pdno number) is select sal
from emp where deptno=pdno;
–定义三个变量用于保存每个部门三个工资段的人数
count1 number;
count2 number;
count3 number;
saltotal number;
–记录c1游标中的部门号
pdeptno dept.deptno% TYPE;
–记录c2游标中的薪水值
psal emp.sal% TYPE;
begin
select sum(sal) into saltotal from emp;
open c1;–打开c1 获得所有部门号
loop
fetch c1 into pdeptno;–取一个部门号
exit when c1%notfound;
–计数器清零
count1 := 0;
count2 := 0;
count3 := 0;
–得到该部门的所有员工
open c2(pdeptno);
loop
fetch c2 into psal; --得到该员工的工资
exit when c2%notfound;
if psal <=3000 then count1 := count1 + 1;
elsif psal > 3000 and psal <=6000 then count2 := count2 + 1;
else count3 := count3 + 1;
end if;
end loop;
close c2;
–保存该部门的统计结果
insert into salcount values(pdeptno,count1,count2,count3, nvl(saltotal,0));
commit;
end loop;
close c1;
end;
(2)直接输出在屏幕上
set serveroutput on
declare
–定义两个游标保存结果
cursor c1 is select distinct deptno from dept;
cursor c2(pdno number) is select sal
from emp where deptno=pdno;
–定义三个变量用于保存每个部门三个工资段的人数
count1 NUMBER;
count2 number;
count3 number;
saltotal number;
–记录c1游标中的部门号
pdeptno dept.deptno% TYPE;
–记录c2游标中的薪水值
psal emp.sal% TYPE;
begin
select sum(sal) into saltotal from emp;
open c1;–打开c1 获得所有部门号
loop
fetch c1 into pdeptno;–取一个部门号
exit when c1%notfound
–计数器清零
count1 := 0;
count2 := 0;
count3 := 0;
–得到该部门的所有员工
open c2(pdeptno);
loop
fetch c2 into psal; --得到该员工的工资
exit when c2%notfound;
if psal <=3000 then count1 := count1 + 1;
elsif psal > 3000 and psal <=6000 then count2 := count2 + 1;
else count3 := count3 + 1;
end if;
end loop;
close c2;
–在屏幕显示
dbms_output.put_line(pdeptno||count1||count2||count3||saltotal);
commit;
end loop
close c1;
end;
用PL/SQL语言编写一程序,实现按部门分段(6000以上、(6000,3000)、3000元以下)统计各工资段的职工人数、以及各部门的工资总额(工资总额中不包括奖金)相关推荐
- PL/SQL语言必看书籍推荐
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用.PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/S ...
- Oracle PL/SQL语言初级教程(自学)
Oracle PL/SQL语言初级教程 PL/SQL 语言基础 PL/SQL 是一种高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令. 通过使用 PL/SQL 程序 ...
- PL/SQL语言基础
PL/SQL语言基础 /********************************数据类型*************************************/ %rowtype (行对 ...
- Oracle PL/SQL语言入门
一.背景介绍 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方 ...
- KingbaseES PL/SQL 过程语言参考手册(3. PL/SQL语言基础)
3. PL/SQL语言基础¶ 本章节阐述PL/SQL语言的基本组成. 字符集 词法单元 声明 对标识符的引用 标识符的作用域和可见性 为变量赋值 表达式 错误报告函数 3.1. 字符集 任何要由PL/ ...
- python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...
- Oracle PL/SQL语言初级教程
http://fs3.dajie.com/2010/09/20/034/12849518348824410.pdf PL/SQL语言基础 复合数据类型 单行函数和组函数 表和视图 完整性约束 过程和函 ...
- C语言编写一个赋值程序,实验2 用C语言编写简单程序——2.1 基本数据处理.doc
实验2 用C语言编写简单程序--2.1 基本数据处理 实验2 用C语言编写简单程序 2.1 基本数据处理 [实验目的] (1)掌握算术表达式和赋值表达式的使用. (2)掌握基本输出函数的使用. (3) ...
- 编写lisp程序解一元二次方程_用C语言编写一程序求解一元二次方程的根。
展开全部 C语言编写一程序求解32313133353236313431303231363533e78988e69d8331333365643661一元二次方程的根: #include #include ...
最新文章
- ETL MySQL in Oracle ODI 12c
- 无线网络嗅探中的Radiotap
- SAP Commerce Cloud 的代码仓库
- MySQL主从复制故障解决
- python千人成像_Python实现千图成像:从图片爬取到图片合成
- 芯片设计群 ,欢迎 IC领域朋友请加我微信交流:Jdrobots ,加我备注IC。谢谢! 芯片设计资料
- java strlen,跟妹妹聊到 Java 16 新特征,真香!
- kinit无密码登录配置
- 微信小程序下载API接口调用异常常见解决方法
- Python 监控linux之dstat
- 使用canvas制作在线涂鸦画板
- word excel如何用印章生成器软件在线制作电子印章 电子公章图片
- 有线路由器接无线路由器设置方法
- 温德姆集团加速麦客达品牌在华扩张;柏悦酒店将进驻长沙;希尔顿惠庭中国首店将在深圳开业 | 美通社头条...
- HTML鼠标滚轮事件
- Linux 搭建NodeBB社区,搭建CAS登录认证平台,实现Nodebb接入企业CAS认证(二)
- 爬虫获取页面信息并存储
- 医院门诊透视的生活万花筒
- 【AMD、CMD和CommonJS】
- android 动画引擎,用 Android 实现一条小金鱼游动动画(超棒)