目录
聚合函数介绍
什么是聚合函数
聚合函数类型
聚合函数语法
聚合函数不能嵌套调用。
AVG / SUM :只适用于数值类型的字段(或变量)
拓展:字符串求总和:MySQL中 0 Order 直接报无效的数字
MAX / MIN :适用于数值类型、字符串类型、日期时间类型的字段(或变量)
字符串可以比较 大小
COUNT:
计算表中有多少条记录,如何实现?
如何需要统计表中的记录数,使用COUNT(*)、COUNT(1)、COUNT(具体字段) 哪个效率更高呢?
其他聚合函数:
GROUP BY 的使用
单列分组
实例1:查询各个部门的平均工资,最高工资
实例2:查询各个job_id的平均工资
实例3:查询各个department_id,job_id的平均工资
注意:错误写法
结论:
使用多个列分组
案例:查询各个部门的平均工资,按照平均工资升序排列
说明:
HAVING
过滤分组:HAVING子句
案例:查询 个个部门的最大工资,并且最大工资大于 1000的 部门
非法使用聚合函数 : 不能在 WHERE 子句中使用聚合函数:
要求:
案例:查询部门id为10,20,30,40这4个部门中最高工资比10000高的部门信息
结论:
WHERE 与 HAVING 的对比
引出问题:为什么where 的效率要比 having的效率高? 看SQL的执行原理
SQL底层执行原理
查询的结构
SQL语句的执行过程:
WHERE 为什么不包含聚合函数的过滤条件?
为什么where 的效率要比 having的效率高?

聚合函数介绍
AVG / SUM :只适用于数值类型的字段(或变量)
MAX / MIN :适用于数值类型、字符串类型、日期时间类型的字段(或变量)
COUNT:
其他聚合函数:
如:方差、标准差、中位数
GROUP BY 的使用
单列分组
使用多个列分组
HAVING
引出问题:为什么where 的效率要比 having的效率高? 看SQL的执行原理
SQL底层执行原理
查询的结构
SQL语句的执行过程:
WHERE 为什么不包含聚合函数的过滤条件?
为什么where 的效率要比 having的效率高?