MySQL聚合函数(多行函数)

聚合函数(多行函数)

聚合函数作用于一组数据,并对一组数据返回一个值。


常见聚合函数

AVG和SUM函数

       只作用于数值类型数据,不包含NULL

       求工资平均值和总和

      

      

MIN和MAX函数

       可以作用于任何数据类型(如字符串,日期),不包含NULL

       作用时按字符串排序规则,逐个比较

COUNT函数

       返回查询结果有多少行,不包含空值

       当计算平均工资时,AVG不包含空值,所有不能计算没有工资的人,可以写成

SUM(salary)/count(1)


基本聚合函数

GROUP BY分组函数

       根据组别来将查询结果分组,例如按部门ID计算平均工资。

       SQL标准:SELECT中的字段除了函数字段外必须出现在GROUP BY中

                       GROUP BY 中字段不需要出现在SELECT中

       出现顺序:SELECT > WHERE > GROUP > ORDER > LIMIT

       还可以使用多个分组,例如将部门分组并且将工种分组,则该部门的不同工种一组

       GROUP BY新特性:WITH ROLLUP

       除了分组结果外,还另增一行记录计算总体的结果,不能与ORDER一起使用

       最后一行是总体的平均值


HAVING关键字

用于被GROUP BY 分组后进行筛选条件,必须与其一起使用

GROUP BY 不能与WHERE一起使用

WHERE和HAVING的对比

区别1:

WHERE 可以直接使用表中的字段作为筛选条件,但不能使用分组中的计算函数作为筛选条件; HAVING 必须要与 GROUP BY 配合使用,可以把分组计算的函数分组字段作为筛选条件。

区别2:

如果需要通过连接从关联表中获取需要的数据,WHERE 是先筛选后连接,而HAVING 是先连接后筛选。


SELECT执行顺序

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT 的字段 -> DISTINCT -> ORDER BY-> LIMIT从左向右优先执行

SELECT ...,....,...

FROM ...,...,....

WHERE 多表的连接条件

AND 不包含组函数的过滤条件

GROUP BY ...,...

 HAVING 包含组函数的过滤条件

ORDER BY ... ASC/DESC

LIMIT ...,...

#(1)from:从哪些表中筛选

#(3)where:从表中筛选的条件

#(4)group by:分组依据

#(5)having:在统计结果中再次筛选

#(6)order by:排序

#(7)limit:分页

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值