300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 查询出每一个雇员的姓名 工资 部门名称 工资在公司的等级及其领导的姓名 领导的工

查询出每一个雇员的姓名 工资 部门名称 工资在公司的等级及其领导的姓名 领导的工

时间:2018-12-19 23:06:35

相关推荐

查询出每一个雇员的姓名 工资 部门名称 工资在公司的等级及其领导的姓名 领导的工

如题:

查询出每一个雇员的姓名,工资,部门名称,工资在公司的等级及其领导的姓名,领导的工资,以及领导所相应的等级

这是oracle的默认Scott用户以下的emp。dept 和 salgrade 表间的一道思考题。

雇员表(emp)

记录了每一个雇员的基本信息

NO 字段 类型 描写叙述

1 empno Number(4) 雇员编号

2 ename Varchar2(10) 雇员姓名

3 job Varchar2(9) 工作职位

4 mgr Number(4) 雇员的领导(经理)编号

5 hierdate date 入职日期

6 sal Number(7,2) 月薪/工资

7 comm Number(7,2) 奖金

8 deptno Number(2) 雇员所属部门的编号

部门表(emp)

记录了每一个部门的基本信息

NO 字段 类型 描写叙述

1 deptno Number(2) 部门编号(唯一)

2 dname Varchar2(14) 部门名称

3 loc Varchar2(13) 地址

工资等级表 (salgrade)

一个公司的工资等级制,用来表示同一等级的工资下限及上限

NO 字段 类型 描写叙述

1 Grade number 等级名称

2 Losal number 此等级的最低工资

3 hisal number 此等级的最高工资

分析:先明白工资等级表(salgrade)中的内容

select * from salgrade;

再查询查询出每一个雇员的姓名,工资,部门名称,工资在公司的等级(salgrade)

SELECT distinct e.ename,e.sal,d.dname,g.grade e_grade FROM emp e,dept d,salgrade g,emp sWHERE (e.deptno=d.deptno) AND (e.sal BETWEEN g.losal AND g.hisal);

在此上基础上添加查找上司姓名

SELECT e.ename,e.sal,d.dname,g.grade,s.enameFROM emp e,dept d,salgrade g,emp sWHERE (e.deptno=d.deptno) AND (e.sal BETWEEN losal AND hisal) AND (s.empno=e.mgr);

最后确定雇员的经理姓名,经理的工资,以及经理工资所相应的等级

SELECT e.ename,e.sal,d.dname,g.grade e_grade,s.ename mgr_name,g2.grade m_gradeFROM emp e,dept d,salgrade g,emp s,salgrade g2WHERE (e.deptno=d.deptno) AND (e.sal BETWEEN g.losal AND g.hisal) AND (s.empno=e.mgr) AND (s.sal BETWEEN g2.losal AND g2.hisal);

从这个样例能够看出,对于复杂的多表查询,要一步一步地实现。不要急于求成。

进一步思考:

假设要将上面求得的结果按如样式显示工资的等级,应该怎样实现

1: 第五等工资

2: 第四等工资

3: 第三等工资

4: 第二等工资

5: 第一等工资

此时仅仅能用DECODE()函数来实现

SELECT e.ename, e.sal, d.dname,decode(g.grade,5,'第一等工资',4,'第二等工资',3,'第三等工资',2,'第四等工资',1,'第五等工资')e_grade, s.ename mgr_name, s.sal mgr_sal,decode(g2.grade,5,'第一等工资',4,'第二等工资',3,'第三等工资',2,'第四等工资',1,'第五等工资') m_gradeFROM emp e,dept d,salgrade g,emp s,salgrade g2WHERE (e.deptno=d.deptno) AND (e.sal BETWEEN g.losal AND g.hisal)AND (s.empno=e.mgr) AND (s.sal BETWEEN g2.losal AND g2.hisal)

查询出每一个雇员的姓名 工资 部门名称 工资在公司的等级及其领导的姓名 领导的工资 以及领导所相应的等级...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。