目录
一、列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数
二、列出在部门"SALES"工作的员工的姓名,假定不知道销售部的部门编号
三、列出薪资高于公司平均薪资的所有员工,所在部门,上级领导,雇员的工资等级
五、列出薪金等于部门 30 中员工的薪金的其他员工的姓名和薪金
六、列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金,部门名称
一、列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数
查找最低薪资大于1500的工作,再对过滤出来的这些job计数
二、列出在部门"SALES"工作的员工的姓名,假定不知道销售部的部门编号
第一步:由于不知道部门编号,所以通过dname去查编号
第二步:通过编号去查姓名
三、列出薪资高于公司平均薪资的所有员工,所在部门,上级领导,雇员的工资等级
select
e.ename,d.dname,l.mgr,s.grade
from emp e
join dept d
on e.deptno=d.deptno
left join (select empno,mgr from emp) l
e.mgr=l.empno
join salgrade s
on e.sal between s.losal and s.hisal
where sal > (select avg(sal) from emp);
四、列出与"SCOTT"从事相同工作的所有员工及部门名称
第一步:查找scott的工作
select job from emp where ename='scott';
第二步:将d表和e表连接查找ename和dname,连接条件为deptno相同,最后过滤条件为job=(scott的工作)and 名字不等于scott
五、列出薪金等于部门 30 中员工的薪金的其他员工的姓名和薪金
第一步:找出deptno为30的员工们的薪资
第二步:找出其他员工的姓名和薪资,条件为薪资 in(deptno为30的薪资)
没有
六、列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金,部门名称
第一步:查询出30部门的最大薪资
第二步:select ename,sal,dname 两表连接 where sal>(30部门最大薪资);
七、列出在每个部门工作的员工数量,平均工资和平均服务期限
平均服务期限:服务期限的平均值:avg(现在时间-入职时间)=avg(timesstampdiff(YEAR,hiredate,now()))
八、列出所有员工的姓名、部门名称和工资
九、列出所有部门的详细信息和人数
d表和e表连接,将d表作为主表
十、列出各种工作的最低工资及从事此工作的雇员姓名
思路同Part 1 第一题