sq课堂练习题

第一步:选择部门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;

 谢谢大家!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值