加入收藏 | 设为首页 | 会员中心 | 我要投稿 哈尔滨站长网 (https://www.0451zz.cn/)- 人体识别、图像分析、开发者工具、基础存储、物联安全!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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';

(编辑:哈尔滨站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读