MySQL聚合函数

七.聚合函数

1.常见的五个聚合函数

AVG / SUM:只适用于数值类型的字段(或变量)

MAX / MIN:使用于数值类型,字符串类型和日期类型

COUNT:

1.作用:计算指定的字段在查询结构中出现的个数

如何计算表中有多少条记录?

1.COUNT(*)
2.COUNT(1)

COUNT(具体字段)不能计算表中的记录

原因:计算指定字段出现的个数时,是不包含NULL的值

公式:AVG = SUM / COUNT

2.GROUP BY

可以使用GROUP BY将表中的数据分成若干组

#查询各个部门的平均工资和工资总和
SELECT department_id,AVG(salary),SUM(salary)
FROM employees
GROUP BY department_id;

#分成多组的情况:
#查询各个部门department_id和job_id的平均工资
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id,job_id;

注意点:

GROUP BY声明在FROM后面、WHERE后面,ORDER BY前面、LIMIT前面

SELECT中出现的非组函数的字段必须声明在GROUP BY中。
反之,GROUP BY中声明的字段可以不出现在SELECT中。

例如

#错误
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id;

3.HAVING

作用:用来过滤数据

如果过滤条件中使用了聚合函数,则必须使用HAVING来替换WHERE。否则,报错。

HAVING必须声明在GROUP BY 的后面。

开发中,我们使用HAVING的前提是SQL中使用了GROUP BY。

当过滤条件中有聚合函数时,则此过滤条件必须声明在HAVING中。
当过滤条件中没有聚合函数时,则此过滤条件声明在WHERE中或HAVING中都可以。但是,大家必须声明在WHERE中

WHERE和HAVING的对比

优点缺点
WHERE先筛选数据再关联,执行效率高不能使用分组中的计算函数进行筛选
HAVING可以使用分组中的计算函数在最后的结果集中进行筛选,执行效率较低

4.MySQL语句的执行顺序

(1). 首先执行 FROM 子句, 从 tb_Grade 表组装数据源的数据

(2). 执行 WHERE 子句, 筛选 tb_Grade 表中所有数据不为 NULL 的数据

(3). 执行 GROUP BY 子句, 把 tb_Grade 表按 “学生姓名” 列进行分组(注:这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以在where中不可以使用select中的别名,而having却可以使用)

(4). 计算 max() 聚集函数, 按 “总成绩” 求出总成绩中最大的一些数值

(5). 执行 HAVING 子句, 筛选课程的总成绩大于 600 分的.

(6). 执行 ORDER BY 子句, 把最后的结果按 “Max 成绩” 进行排序.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值