-- 01,列出至少有四个员工的所有部门。SELECT d.DNMAE FROM emp e LEFTJOIN dept d using(DEPTNO)GROUPBY DNMAE HAVINGcount(e.ENAME)>=4;-- 02,列出新金比“SMITH"多的所有员工。(大于 最大薪水SMITH员工)SELECT*FROM emp WHERE SAL >(SELECT SAL FROM emp WHERE ENAME ='SMITH');SELECT*FROM emp e,(SELECT SAL FROM emp WHERE ENAME ='SMITH') s WHERE e.SAL> s.SAL;-- 03,列出所有员工的姓名及其直接上级的姓名。SELECT e.ENAME 上级,e.EMPNO,y.ENAME 员工,y.MGR FROM emp e ,emp y WHERE e.EMPNO=y.MGR;-- 04,列出受雇日期早于其直接上级的所有员工。SELECT e.ENAME 上级,e.EMPNO,y.ENAME 员工,y.MGR ,e.HIREDATE 上级 ,y.HIREDATE 员工 FROM emp e ,emp y WHERE e.EMPNO=y.MGR AND e.HIREDATE > y.HIREDATE;-- 05,列出部门名称和这些部门门的员工信息,包括那些没有员工的部门。SELECT d.DNMAE, e.ENAME FROM emp e RIGHTJOIN dept d using(DEPTNO);-- 06,列出所有job为“CLERK" (办事员)的姓名及其部门]名称。SELECT e.ENAME,d.DNMAE FROM emp e JOIN dept d USING(DEPTNO)WHERE e.JOB='CLERK';-- 07,列出最低薪金大于2500的各种工作。SELECT JOB,min(SAL)FROM emp GROUPBY JOB HAVINGmin(SAL)>2500;-- 08,列出在部门"SALES" (销售部)工作的员工的姓名。SELECT*FROM emp e LEFTJOIN dept d USING(DEPTNO)WHERE d.DNMAE ='SALES';SELECT e.ENAME,d.DNMAE FROM emp e LEFTJOIN dept d USING(DEPTNO)WHERE d.DNMAE ='SALES';-- 09,列出薪金高于公司平均薪金的所有员工。SELECT*FROM emp WHERE SAL >(SELECTavg(SAL)FROM emp);-- 10,列出与“ALLEN"从事相同:工作的所有员工。SELECT*FROM emp WHERE JOB =(SELECT JOB FROM emp WHERE ENAME ='ALLEN')AND ENAME !='ALLEN';-- 11,列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。SELECT ENAME,SAL FROM emp WHERE DEPTNO =30;SELECT ENAME,SAL FROM emp WHERE SAL in(SELECT SAL FROM emp WHERE DEPTNO ='30');-- 12,列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。SELECT ENAME,SAL FROM emp WHERE SAL >(SELECTmax(SAL)FROM emp WHERE DEPTNO =30);SELECT ENAME,SAL FROM emp WHERE SAL >ALL(SELECT SAL FROM emp WHERE DEPTNO =30);-- 13,列出在每个部门工作的员工数量、平均工资和平均服务期限。selectcount(*),avg(sal),avg(DATEDIFF(CURRENT_DATE,HIREDATE))from emp groupby deptno;-- 14,列出所有员工的姓名、部门名称和工资。SELECT e.ENAME,d.DNMAE,e.SAL FROM emp e RIGHTJOIN dept d USING( DEPTNO);-- 15,列出从事同一种工作但属于不同部门的员工的一 种组合。SELECT e.ENAME,e.JOB,e.DEPTNO,m.ENAME,m.JOB,d.DEPTNO FROM emp e, emp m JOIN dept d USING(DEPTNO)WHERE e.JOB=m.JOB and e.DEPTNO != d.DEPTNO;-- 16,列出所有部门的详细信息和部门人数。SELECT d.DNMAE,count(e.EMPNO)FROM emp e JOIN dept d USING(DEPTNO)GROUPBY d.DNMAE
-- 17,列出各种工作的最低工资。SELECT JOB,min(SAL)FROM emp GROUPBY JOB ;-- 18,列出各个部门]的MANAGER(经理)的最低薪金(job为MANAGER)。SELECT JOB,min(SAL)FROM emp WHERE JOB='MANAGER';SELECT JOB,min(SAL)FROM emp WHERE JOB='MANAGER'GROUPBY DEPTNO ;-- 19,列出所有员工的年工资,按年薪从低到高排序SELECT ENAME,(SAL+IFNULL(COMM,0))*12 年薪 FROM emp ORDERBY(SAL+IFNULL(COMM,0))*12;-- 20,列出所有job= 'CLERK' 的员工平均薪资SELECTAVG(SAL)FROM emp WHERE job='CLERK';-- 21 ,列出job= "CLERK'员工的平均薪资按照部门]分组SELECT DEPTNO,AVG(SAL)FROM emp WHERE job='CLERK'GROUPBY DEPTNO;-- 22,列出job= 'CLERK'员工的平均薪资按照部门分组并且部门编号in(10,30) 按照平均薪资降序排列SELECT DEPTNO,AVG(SAL)FROM emp WHERE job='CLERK'AND DEPTNO in(10,30)GROUPBY DEPTNO ORDERBYAVG(SAL)DESC;-- 23 ,列出job= CLERK'员工的平均薪资按照部门分组并且部门编号in(20,30) 并且部门员工数量>=2人按照平均薪资降序排列SELECT DEPTNO,AVG(SAL)FROM emp WHERE job='CLERK'AND DEPTNO in(20,30)GROUPBY DEPTNO HAVINGcount(EMPNO)>=2ORDERBYAVG(SAL);