第一步:选择部门30中的所有员工 select * from emp where deptno = 30;
第二步:列出所有办事员的姓名,编号和部门编号 select ename,empno,deptno from emp where job ='办事员';
第三步:找出佣金高于薪金的员工select ename,sal,comm from emp where comm>sal;
第四步:找出没有佣金的员工 select ename,sal,comm from emp where comm is null or comm = 0;
第五步:找出佣金高于薪金的60%的员工select * from emp where comm>sal*0.6;
第六步:找出部门10中所有人事部长和部门20中所有办事员的详细资料select * from emp where (deptno = 10 and job = '人事部长')or (deptno = 20 and job = '办事员');
第七步:找出收取佣金的员工select * from emp where comm>0;
第八步:找出不收佣金或收取的佣金低于100的员工select * from emp where comm <100 or comm is null;
第九步:找出姓张的员工的信息select * from emp where ename like '%张%';
第十步:显示员工的姓名和受雇日期,新的员工排在最前面 select ename ,hiredate from emp order by hiredate desc;
第十一步:按工作的降序排序,若工作相同则按薪金排序elect ename,hiredate from emp order by job,sal;
第十二步:查出不姓刘的员工的信息select *from emp where ename not like '刘%';
第十三步:取出姓李的员工select * from emp where ename like'%李%';
第十四步:查询出每一位雇员的编号、姓名、职位、部门名称、位置
select e.empno,e.ename,e.job,d.dname,d.loc from emp e,dept d where d.deptno = e.deptno;
第十五步: 要求查询出每一位雇员的姓名、职位、领导的姓名select e.ename,e.job,m.ename from emp e,emp m where e.mgr = m.empno;
第十六步:查询出每个雇员的编号、姓名、基本工资、职位、领导的姓名、部门名称及位置。SELECT e.empno,e.ename,e.sal,e.job,e.mgr,d.dname,d.loc FROM emp e,emp m,dept d WHERE e.mgr = m.empno AND e.deptno = d.deptno;
第十七步:列出在部门"销售部"工作的员工的姓名,假定不知道销售部的部门编号。 SELECT e.ename FROM emp e,dept d WHERE e.deptno=d.deptno AND d.dname='销售部';
第十八步:列出与"李兴"从事相同工作的所有员工。SELECT e.* FROM emp e WHERE e.job=(SELECT el.job FROM emp el WHERE el.ename='李兴');
第十九步:列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。 SELECT e.ename,e.sal FROM emp e WHERE e.sal >ALL(SELECT el.sal FROM emp el WHERE deptno=30);
第二十步:列出受雇日期早于其直接上级的所有员工。SELECT e.* FROM emp e WHERE ((SELECT el.hiredate FROM emp el WHERE e.mgr=el.empno)-e.hiredate)>0;
第二十一步:按照部门编号分组,求出每个部的人数,平均工资
SELECT deptno,COUNT(empno),AVG(sal)FROM emp GROUP BY deptno;
第二十二步:按照职位分组,求出每个职位的最高和最低工资
SELECT job,MAX(sal),MIN(sal) FROM emp GROUP BY job;
第二十三步:计算出每个各职位的平均工资SELECT job,AVG(sal)FROM emp GROUP BY job;
第二十四步:查询出每个部门的名称、部门的人数、平均工资
查询出每个部门的名称、部门的人数、平均工资
SELECT d.dname,COUNT(e.empno),AVG(e.sal)FROM dept d,emp e WHERE e.deptno = d.deptno GROUP BY d.dname;-- left outer join on SELECT d.dname,COUNT(e.empno),AVG(e.sal) FROM dept d LEFT OUTER JOIN emp eON e.deptno = d.deptno GROUP BY d.dname ORDER BY e.empno DESC;
第二十五步:要求统计出每个部门的详细信息,并且要求这些部门的平均工资高于2000;SELECT d.dname,AVG(e.sal)a FROM dept d LEFT OUTER JOIN emp e ON d.deptno = e.deptno GROUP BY d.dname HAVING a>2000;
第二十六步:要求查询出工资比华仔还要高的全部雇员信息
SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE ename='华仔');
第二十七步:要求查询出高于公司平均工资的全部雇员信息
SELECT * FROM emp WHERE sal>(SELECT AVG(sal) FROM emp);
第二十八步:查询出每个部门的编号、名称、位置、部门人数、平均工资
SELECT d.dname,COUNT(e.deptno) c,AVG(e.sal) FROM dept d LEFT OUTER JOIN emp e ON d.deptno = e.deptno GROUP BY d.dname ORDER BY c;
第二十九步:列出至少有一个员工的所有部门。 SELECT d.deptno, d.dname FROM dept d WHERE (SELECT COUNT(e.empno) FROM emp e WHERE e.deptno=d.deptno)>1;
第三十步:.查询每个工资等级各有多少员工
SELECT s.grade,COUNT(*) FROM emp e JOIN salgrade s ON e.sal BETWEEN s.losal AND hisal GROUP BY s.grade;
第三十一步:查询部门中(所有人)的平均工资等级SELECT e.deptno,AVG(s.grade) avggrade FROM emp e JOIN salgrade s ON e.sal BETWEEN s.losal AND hisal GROUP BY e.deptno ORDER BY e.deptno;
谢谢大家!!