如题:
查询出每个雇员的姓名,工资,部门名称,工资在公司的等级及其领导的姓名,领导的工资,以及领导所对应的等级
这是oracle的默认Scott用户下面的emp,dept 和 salgrade 表间的一道思考题。
分析:先明确工资等级表(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 s
WHERE (e.deptno=d.deptno) AND (e.sal BETWEEN g.losal AND g.hisal);
在此上基础上增加查找上司姓名
SELECT e.ename,e.sal,d.dname,g.grade,s.ename
FROM emp e,dept d,salgrade g,emp s
WHERE (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_grade
FROM emp e,dept d,salgrade g,emp s,salgrade g2
WHERE (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);
vcu8v7w6PC9wPgo8cD7I57n70qq9q8nPw+bH87XDtcS94bn7sLTI59H5yr3P1Mq+uaTXyrXEtci8tqOs06a4w8jnus7Ktc/
WPC9wPgo8cD4xOiAgILXazuW1yLmk18o8L3A+CjxwPjI6ICAgtdrLxLXIuaTXyjwvcD4KPHA+MzogICC12sj9tci5pNfKPC9wPgo8cD40OiAgILXatv61yLmk18o8L3A+CjxwPjU6ICAgtdrSu7XIuaTXyjwvcD4KPHA+tMvKsda7xNzTw0RFQ09ERSgpuq/K/cC0yrXP1jwvcD4KPHA+PHByZSBjbGFzcz0="brush:sql;">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_grade FROM emp e,dept d,salgrade g,emp s,salgrade g2 WHERE (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)