--1、列出至少有一个员工的所有部门。
select distinct d.dname from emp e, dept d where e.deptno=d.deptno;
--2、列出薪金比“王涛”多的所有员工。
SELECT sal from emp where emp.ename="王涛";
SELECT * from emp where sal>(SELECT sal from emp where emp.ename="王涛");
--3、列出所有员工的姓名及其直接上级的姓名,如果当前员工没有直接领导,那么领导名称位置显示boss。
补充:列出每一个员工的工资及工资等级
select a.ename 员工,ifnull(b.ename,"boss") 领导 from emp a left join emp b on a.mgr=b.empno;
select e.ename,e.sal,sg.grade from emp e ,sal_grade sg where e.sal between sg.minsal and sg.maxsal;
--4、列出受雇日期早于其直接上级的所有员工。
select distinct a.ename 员工,b.ename 领导 from emp a left join emp b on a.mgr=b.empno where a.hiredate<b.hiredate;
--5、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。
select d.dname ,e.*
from dept d left join emp e on d.deptno=e.deptno;
--、列出所有job为“CLERK”(办事员)的姓名及其部门名称。
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno where e.job="教学总监";
--7、列出最低薪金大于1500的各种工作。
select distinct job from emp where sal > 1500;
--8、列出在部门“教学部”工作的员工的姓名。
select e.ename from emp e join dept d on e.deptno=d.deptno where d.dname ="教学部";
--9、列出薪金高于公司平均薪金的所有员工。
select AVG(sal) from emp ;
select * from emp where sal >(select AVG(sal) from emp );
--10、列出与“刘枫”从事相同工作的所有员工。
select job from emp where ename="刘峰";
select * from emp where job=(select job from emp where ename="刘峰");
--列出所有员工的姓名及其直接上级的姓名,如果当前员工没有直接领导,那么领导名称位置显示boss。
select e.ename 员工姓名, ifnull(m.ename,'boss') 领导姓名 from emp e left JOIN emp m on e.mgr = m.empno
补充:列出每一个员工的工资及工资等级
select ename,sal ,grade from emp INNER JOIN sal_grade on emp.sal <= sal_grade.maxsal and emp.sal > sal_grade.minsal
--11、列出薪金等于部门10中员工的薪金的所有员工的姓名和薪金。
select sal from emp where deptno=10;
select ename ,sal from emp where sal=5000||sal=7000||sal=20000||sal=1111||sal=12000;
--12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
select sal from emp where deptno=20;
select ename ,sal from emp where sal>all (select sal from emp where deptno=20);
--13、列出在每个部门工作的员工数量、平均工资和平均服务期限。***********************************************
select e.deptno ,count(e.deptno) 每个部门的员工数量 ,avg(sal) 平均工资 from emp e group by e.deptno;
--14、列出所有员工的姓名、部门名称和工资。
select e.ename,d.dname,e.sal from dept d left join emp e on d.deptno = e.deptno ;
--15、列出从事同一种工作但属于不同部门的员工的一种组合。
select DISTINCT * from emp a join emp b on (a.job = b.job and a.deptno != b.deptno);
--16、列出所有部门的详细信息和部门人数。
select d.*,count(*) 部门人数 from emp e ,dept d where e.deptno = d.deptno GROUP BY e.deptno;
--17、列出各种工作的最低工资。
select job ,min(sal) from emp group by job;
--18、列出各个部门的MANAGER(经理)的最低薪金(job为MANAGER)。
select job ,min(sal) from emp where job="MANAGER" group by job ;
--19、列出所有员工的年工资,按年薪从低到高排序。 +++++*****************************
select ename , sal from emp order by sal asc;