SQL面试题(18道)

部门表 DEPT

deptno(部门编号)
dname(部门名称)
10 人力资源部
20 研发中心
30 销售部门
40 市场部

员工表EMP
Empno(员工编号)
Ename(员工姓名)
Job(职位)
Sal(薪金)
Deptno(部门编号)
1000 张平 部门经理 2800.00 20
2000 李淑华 公司领导 3600.00 30
3000 马生 部门经理 2975.00 10
4000 王一平 业务员 1850.00 30
5000 孙小平 业务员 2100.00 20



#1.列出至少有一个员工的所有部门。 
select dname from dept where deptno in(select deptno from emp e group by deptno having count(e.empno)>=1) 
#2.列出薪金比“张平”多的所有员工。 
select * from emp where sal>(select sal from emp where ename="张平") 
#3.列出所有员工的姓名及其直接上级的姓名。 
select e.ename, m.ename from emp e left join (select ename,empno from emp) m on e.mgr = m.empno 
select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from emp a 
#4.列出受雇日期早于其直接上级的所有员工。 
select e.ename from emp e, emp m where e.mgr = m.empno and e.hiredate业务员的姓名及其部门名称。 
select e.ename, d.dname from emp e left join dept d on e.deptno=d.deptno where e.job="业务员"
#7.列出最低薪金大于1500的各种工作。 
select distinct e.job from emp e group by job having min(e.sal)>1500 
#8.列出在部门“销售部门”工作的员工的姓名,假定不知道销售部的部门编号。 
select e.ename from emp e, dept d where d.dname="销售部门" and e.deptno=d.deptno 
#9.列出薪金高于公司平均薪金的所有员工。 
select ename from emp where sal>(select avg(sal) from emp); 
#10.列出与“孙一平”从事相同工作的所有员工。 
select * from emp e where e.job=(select job from emp where ename="孙一平") 
#11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。 
select ename, sal from emp where sal in (select sal from emp where deptno=30) and deptno<>30 
#12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。 
select ename, sal from emp where sal > (select max(sal) from emp where deptno=30) 
#13.列出在每个部门工作的员工数量、平均工资。 
select dname, count(empno), avg(sal) from emp e left join dept d on e.deptno = d.deptno group by dname 
#14.列出所有员工的姓名、部门名称和工资。 
select ename, dname, sal from emp e left join dept d on e.deptno=d.deptno 
#15.列出所有部门的详细信息和部门人数。 
select d.*, enum from dept d left join (select deptno, count(empno) enum from emp group by deptno) e on e.deptno=d.deptno 
#16.列出各种工作的最低工资。 
select dname, minsal from dept d left join (select deptno, min(sal) minsal from emp group by deptno) e on e.deptno=d.deptno 
#17.列出各个部门的"部门经理"的最低薪金。 
select e.deptno, min(sal) minsal from emp e where e.job="部门经理" group by e.deptno 
#18.列出所有员工的年工资,按年薪从低到高排序。 
select e.ename, nvl(sal, 0)*12 ysal from emp e order by ysal asc



你可能感兴趣的:(Mysql,SqlServer,Oracle)