– 1.查询出至少有一个员工的所有部门
SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp);
-- 2.查询出部门名称和这些部门的员工信息,同时查询出没有员工的部门
SELECT dept.`dname`,emp.* FROM dept LEFT JOIN emp ON dept.`deptno`=emp.`deptno`;
-- 3.查询所有“CLERK"(办事员) 的姓名和部门名称,以及部门人数
SELECT * FROM (SELECT deptno,COUNT(*) FROM emp GROUP BY deptno) aa,
(SELECT ename,(SELECT dname FROM dept WHERE deptno=emp.`deptno`) ddname,deptno FROM emp WHERE job='clerk') bb WHERE aa.deptno=bb.deptno ;
-- 4.查询出所有员工的姓名和直接上级的姓名
SELECT e.ename,m.ename FROM emp e,emp m WHERE e.mgr = m.empno;
-- 5.查询各job的员工工资的最大值,最小值,平均值,总和
SELECT MAX(sal),MIN(sal),SUM(sal),AVG(IFNULL(sal,0)) FROM emp;
-- 6.选择统计各个job的员工人数(提示:对job进行分组)
SELECT job,COUNT(*) FROM emp GROUP BY job
-- 7.查询员工最高工资和最低工资的差距,列名为DIFFERENCE;
SELECT (MAX(sal)-MIN(sal)) DIFFERENCE FROM emp ;
-- 8.查询各个管理