mysql常用语句 3
发布时间:2022-08-09 11:12:02 所属栏目:MsSql教程 来源:互联网
导读:1.找出每个部门平均薪水的薪资等级,from后面嵌套子查询 第一步先求出每个部门的平均薪水 mysql select deptno,avg(sal) from emp group by deptno; +--------+-------------+ | deptno | avg(sal) | +--------+-------------+ | 10 | 2916.666667 | | 20 |
|
1.找出每个部门平均薪水的薪资等级,from后面嵌套子查询 第一步先求出每个部门的平均薪水 mysql> select deptno,avg(sal) from emp group by deptno; +--------+-------------+ | deptno | avg(sal) | +--------+-------------+ | 10 | 2916.666667 | | 20 | 2175.000000 | | 30 | 1566.666667 | +--------+-------------+ 3 rows in set (0.00 sec) 第二步把第一步的结果当做一个表,再和salgrade结合查询 mysql> select s.grade ,t.* from ( select deptno,avg(sal) as avgsal from emp group by deptno) t join salgrade s on t.avgsal between s.losal and s.hisal; +-------+--------+-------------+ | grade | deptno | avgsal | +-------+--------+-------------+ | 3 | 30 | 1566.666667 | | 4 | 10 | 2916.666667 | | 4 | 20 | 2175.000000 | +-------+--------+-------------+ 3 rows in set (0.00 sec) 2.找出每个部门薪资等级的平均值 第一步先找每个部门的员工薪水等级 mysql> select s.grade,e.ename,e.deptno,e.sal from emp e join salgrade s on e.sal between s.losal and s.hisal; +-------+--------+--------+---------+ | grade | ename | deptno | sal | +-------+--------+--------+---------+ | 1 | SMITH | 20 | 800.00 | | 3 | ALLEN | 30 | 1600.00 | | 2 | WARD | 30 | 1250.00 | | 4 | JONES | 20 | 2975.00 | | 2 | MARTIN | 30 | 1250.00 | | 4 | BLAKE | 30 | 2850.00 | | 4 | CLARK | 10 | 2450.00 | | 4 | SCOTT | 20 | 3000.00 | | 5 | KING | 10 | 5000.00 | | 3 | TURNER | 30 | 1500.00 | | 1 | ADAMS | 20 | 1100.00 | | 1 | JAMES | 30 | 950.00 | | 4 | FORD | 20 | 3000.00 | | 2 | MILLER | 10 | 1300.00 | +-------+--------+--------+---------+ 14 rows in set (0.00 sec) 第二步求平均值 mysql> select t.deptno,avg(t.grade) from (select s.grade,e.ename,e.deptno,e.sal from emp e join salgrade s on e.sal between s.losal and s.hisal) t join salgrade s group by t.deptno; +--------+--------------+ | deptno | avg(t.grade) | +--------+--------------+ | 10 | 3.6667 | | 20 | 2.8000 | | 30 | 2.5000 | +--------+--------------+ 3 rows in set (0.00 sec) 或者 mysql> select s.grade,avg(s.grade),e.ename,e.deptno,e.sal from emp e join salgrade s on e.sal between s.losal and s.hisal group by e.deptno; +-------+--------------+-------+--------+---------+ | grade | avg(s.grade) | ename | deptno | sal | +-------+--------------+-------+--------+---------+ | 4 | 3.6667 | CLARK | 10 | 2450.00 | | 1 | 2.8000 | SMITH | 20 | 800.00 | | 3 | 2.5000 | ALLEN | 30 | 1600.00 | +-------+--------------+-------+--------+---------+ 3 rows in set (0.00 sec) 3.找出每个员工所在的部门名称,要求显示员工名和部门名。(使用嵌套查询) mysql> select e.ename ,(select d.dname from dept d where e.deptno = d.deptno) as dname from emp e; +--------+------------+ | ename | dname | +--------+------------+ | SMITH | RESEARCH | | ALLEN | SALES | | WARD | SALES | | JONES | RESEARCH | | MARTIN | SALES | | BLAKE | SALES | | CLARK | ACCOUNTING | | SCOTT | RESEARCH | | KING | ACCOUNTING | | TURNER | SALES | | ADAMS | RESEARCH | | JAMES | SALES | | FORD | RESEARCH | | MILLER | ACCOUNTING | +--------+------------+ 14 rows in set (0.01 sec) 嵌套查询可以使用在select,from,where后面。 4.union(将结果集相加),找出工作岗位是salesman,manager的员工 mysql> select ename,job from emp where job = 'manager' union select ename,job from emp where job = 'salesman'; +--------+----------+ | ename | job | +--------+----------+ | JONES | MANAGER | | BLAKE | MANAGER | | CLARK | MANAGER | | ALLEN | SALESMAN | | WARD | SALESMAN | | MARTIN | SALESMAN | | TURNER | SALESMAN | +--------+----------+ 7 rows in set (0.00 sec) mysql> select ename,job from emp where job = 'manager'; (编辑:哈尔滨站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
