您好,欢迎访问三七文档
1、列出员工表中每个部门的员工数和部门编号selectdeptno,count(*)fromempgroupbydeptno2、列出员工表中每个部门的员工数(员工数必须大于3),和部门名称selectemp.deptno,dept.dname,count(*)fromemp,deptwhereemp.deptno=dept.deptnogroupbyemp.deptno,dept.dnamehavingcount(*)33、找出工资比JONES多的员工selectename,salfromempwheresal(selectsalfromempwhereename='JONES')4、列出所有员工的姓名和其上级的姓名selecte.ename,b.enamefromempe,empbwheree.mgr=b.empno5、以职位分组,找出平均工资最高的两种职位selectjobfrom(selectjob,avg(sal)fromempgroupbyjoborderbyavg(sal)desc)whererownum=26、查找出不在部门20,且比部门20中任何一个人工资都高的员工的姓名、部门名称selectemp.ename,dept.dnamefromemp,deptwhereemp.deptno=dept.deptnoandsal(selectmax(sal)fromempwheredeptno=20)andemp.deptno!=207、得到平均工资大于2000的工作职种selectjob,avg(sal)fromempgroupbyjobhavingavg(sal)20008、分部门得到工资大于2000的所有员工的平均工资,并且平均工资还要大于2500selectdeptno,avg(sal)fromempwheresal2000groupbydeptnohavingavg(sal)25009、得到每个月工资总数最少的那个部门的部门编号,部门名称,部门位置方法1selectdept.deptno,dept.dname,dept.locfrom(selectdeptno,sum(sal)fromempgroupbydeptnoorderbysum(sal)asc)eleftjoindeptone.deptno=dept.deptnowhererownum=1方法2selectp.deptno,dept.dname,dept.locfrom(selecte.*,rownumrnfrom(selectsum(sal),deptnofromempgroupbydeptnoorderbysum(sal)asc)e)p,deptwherep.deptno=dept.deptnoandrn=110、分部门得到平均工资等级为4级(等级表)的部门编号selectdeptno,avg(sal)fromemp,salgradegroupbydeptnohavingavg(sal)between(selectlosalfromsalgradewheregrade=4)and(selecthisalfromsalgradewheregrade=4)11、查找出部门10和部门20中,工资最高第3名到第5名的员工的员工名字,部门名字,部门位置selectp1.ename,dept.deptno,locfrom(selectp.*,rownumrnfrom(selectdeptno,salfromempwheredeptnoin(10,20)orderbysaldesc)p)p1,deptwherep1.deptno=dept.deptnoandrnbetween3and512、查找出收入(工资加上奖金),下级比自己上机还高的员工编号,员工名字,员工收入selecte.empno,e.ename,(e.sal+nvl(e.comm,0))fromempe,empbwheree.mgr=b.empnoand(e.sal+nvl(e.comm,0))(b.sal+nvl(b.comm,0))13、查找出工资等级不为4级的员工的员工名字,部门名字,部门位置selectemp.ename,dept.dname,dept.locfromempleftjoindeptondept.deptno=emp.deptnowheresal(selectlosalfromsalgradewheregrade=4)orsal(selecthisalfromsalgradewheregrade=4)14、查找出职位和‘MARTIN’或者‘SMITH’一样的员工的平均工资selectavg(sal)fromempwherejob=(selectjobfromempwhereename='MARTIN')orjob=(selectjobfromempwhereename='SMITH')15、查找出不属于任何部门的员工select*fromempwheredeptnoisnull方法2select*fromempwheredeptnonotin(selectdeptnofromemp)16、按照部门统计员工数,查出员工数最多的部门的第二名到第五名(列出部门名字,部门位置)selectdept.dname,dept.locfrom(selecta.*,rownumrnfrom(selectdeptno,count(*)fromempgroupbydeptnoorderbycount(*)desc)a)b,deptwhereb.deptno=dept.deptnoandrnbetween2and517、查出KING所在部门的部门号、部门名称、部门人数方法1selectdept.deptno,dept.dname,count(*)fromdeptwheredeptno=(selectdeptnofromempwhereename='KING')groupbydept.deptno,dept.dname方法2selecta.deptno,dept.dname,count(*)from(selectdeptnofromempwhereename='KING')a,deptwherea.deptno=dept.deptnogroupbya.deptno,dept.dname18、查出KING所在部门的工作年限最大的员工名字selectenamefromempwherehiredate=(selectmin(hiredate)fromempwheredeptnoin(selectdeptnofromempwhereename='KING'))19、查出工资成本最高的部门的部门号和部门名称selectdept.deptno,dnamefrom(selectdeptno,max(sal)fromempgroupbydeptnoorderbymax(sal)asc)p,deptwherep.deptno=dept.deptnoandrownum=120、创建一查询,显示与Blake在同一部门工作的雇员的姓名和受雇日期,Blake不包含在内selectename,hiredatefromempwheredeptno=(selectdeptnofromempwhereename='BLAKE')andename!='BLAKE'21、显示位置在Dallas的部门内的雇员姓名,受雇日期以及工作selectdeptno,ename,hiredate,jobfromempwheredeptno=(selectdeptnofromdeptwhereloc='DALLAS')22、显示被King直接管理的雇员的姓名以及工资selecte.ename,e.sal,b.enamefromempe,empbwheree.mgr=b.empnoandb.ename='KING'23、创建一查询,显示能获得与Scott一样工资和奖金的其他雇员的姓名、受雇日期以及工资。selectename,hiredate,(sal+nvl(comm,0))fromempwhere(sal+nvl(comm,0))=(selectsal+nvl(comm,0)fromempwhereename='SCOTT')
本文标题:SQL练习
链接地址:https://www.777doc.com/doc-4624547 .html