分组查询

又到国庆了,2020年还远吗?今年的flag都完成了吗?我是没有完成,趁着国庆继续学习数据库。今天学习的是分组函数。

先上知识点:

1、分组查询涉及到的两个子句是:

-group by

-having

2group by

   2.1 order by【表示通过那个或者哪些字段进行排序】

        Group by【表示通过那个或者哪些字段进行分组】

   2.2 案例:找出每个工作岗位的最高薪水

先将工作岗位分组+再求按工资求最大值max函数

Group by job

Maxsal

Select MaxsalFrom Emp Group by job

分组查询_第1张图片

 重点:若一条DQL语句当中有group by子句,那么select关键字后面只能跟参与分组的字段和分组函数

2.3计算每个部门的平均薪水(按照部门编号分组,对每一组求平均薪水)

Select deptno,avgsalas avgsal from emp group by deptno;

2.4计算不同部门中的不同工资岗位的最高薪水

Select deptno,job,max(sal) as maxsal from emp group by deptno,job;//两个字段联合起来分组

分组查询_第2张图片

2.5找出每个工作岗位的最高薪水,除manger之外

Select job maxsal from emp where job<>manger group by job;

分组查询_第3张图片

2.6 找出每个工作岗位的平均薪水,要求显示平均薪水大于1500

Select job avgsal from emp group by job having avg(sal)>1500;

分组查询_第4张图片

3having

Havingwhere功能都是为了完成数据的筛选

Wherehaving后面都是添加条件

Wheregroupby之前完成过滤

Havinggroup by 之后完成过滤

原则:尽量在where中过滤,无法过滤的数据,通常都是需要先分组之后再过滤的,这个时候可以选择使用having。效率问题。

一个完整的DQL语句总结:

Select

From

Where

Group by

Having

Order by

  1. 以上的关键字顺序不能变,严格遵守
  2. 执行顺序

From:从某张表中检索数据

Where 经过某条件进行过滤

Group by 然后分组

Having 分组之后不满意再过滤

Select 查询出来

Order by 排序输出

 

你可能感兴趣的:(mysql学习库)