2019-08-27 SQL练习题

总结:通过这18道练习题,理解了left join,right join 和子查询。学会了coun(*)和group by的搭配使用。有疑问的是第13题的“在每个部门工作的员工数量”、“平均服务期限”计算和第15题的“部门人数”。

1.列出至少有一个员工的所有部门。

2.列出薪金比“SMITH”多的所有员工。

3.列出所有员工的姓名及其直接上级的姓名。

4.列出受雇日期早于其直接上级的所有员工。

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门

6.列出所有“CLERK”(办事员)的姓名及其部门名称。

7.列出最低薪金大于1500的各种工作。

8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

9.列出薪金高于公司平均薪金的所有员工。

10.列出与“SCOTT”从事相同工作的所有员工。

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

13.列出在每个部门工作的员工数量、平均工资和平均服务期限。

14.列出所有员工的姓名、部门名称和工资。

15.列出所有部门的详细信息和部门人数。

16.列出各种工作的最低工资。

17.列出各个部门的MANAGER(经理)的最低薪金。

18.列出所有员工的年工资,按年薪从低到高排序。


1.SELECT dname

from dept

where deptno in(select deptno from emp)


2.SELECT ename,sal

from emp

WHERE sal > (select sal from emp where ename = 'SMITH')


3.select a.ename,(select ename from emp as b where b.empno=a.mgr)as boss_name

from emp a


4.select a.ename

from emp a

where a.hiredate<(select hiredate from emp as b where b.empno=a.mgr)


5.select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.comm,b.deptno

from dept a left join emp b on a.deptno = b.deptno


6.select a.ename,b.dname

from emp a join dept b

on a.job = 'CLERK' and a.deptno = b.deptno


7.select DISTINCT job

from emp

GROUP BY job having min(sal) > 1500


8.select ename

from emp

where deptno = (SELECT deptno from dept where dname = 'sales')


9.select ename

from emp

where sal > (select avg(sal) from emp)


10.select ename

from emp

where job in(select job from emp where ename = 'scott' )


11.select a.ename,a.sal

from emp a

where a.sal in(select b.sal from emp b where b.deptno = 30) and a.deptno<>30


12.select ename,sal

from emp

where sal > (select max(sal) from emp  where deptno = 30)


13.SELECT deptno,COUNT(*),AVG(sal),AVG(DATEDIFF(now(),hiredate))

FROM emp

GROUP BY deptno


14.select a.ename,b.dname,a.sal

from emp a join dept b on a.deptno = b.deptno


15.select dept.deptno, dept.dname,dept.loc,count(*)

from emp join dept on emp.deptno = dept.deptno

GROUP BY emp.deptno


16.SELECT job,min(sal)

 from emp

GROUP BY job


17.select deptno,min(sal)

from emp

where job = 'manager' GROUP BY deptno


18.select ename,sal*12 as yearsal

from emp

ORDER BY yearsal

你可能感兴趣的:(2019-08-27 SQL练习题)