MySQL七: 聚合函数

聚合函数(聚集、分组)

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

一、常用的聚合函数
  1. AVG和SUM函数

    可以对数值型数据使用

  2. MIN和MAX函数

    可以对任意数据类型使用

    SELECT AVG(salary),SUM(salary),MIN(salary),MAX(salary)
    FROM employees;
    
  3. COUNT函数

    可以对任意数据类型使用,返回表中的记录总数

    区别:COUNT(*),COUNT(1),COUNT(列名)

    ① 搜索引擎为MyISAM,则三者的执行效率相同
    ② 搜索引擎为Innodb,前两个优于搜索列名
    ③ COUNT(列名)会自动去NULL,COUNT( * )不会去空,所以两者不能无条件混用

二、GROUP BY
  1. 使用单列分组
    SELECT department_id ,AVG(salary),SUM(salary)
    FROM employees
    GROUP BY department_id;
    
  2. 使用多列分组

    在第一个字段的分组基础上,再对另一字段进行分组,相当于小组内再分小组

    SELECT department_id,job_id ,AVG(salary),SUM(salary)
    FROM employees
    GROUP BY department_id,job_id;
    

    在这里插入图片描述
    重点:

    在GROUP BY中出现的字段,可以不出现在SELECT语句中,但是在SELECT中出现的字段(聚合函数除外),必须出现在GROUP BY中。

    /* 
     在employees表中,一个department_id对应多个job_id
     如下面的例子:
     在按照department_id分组后,SELECT语句中,每个department_id只显示一次,  那么department_id对应 
     的job_id应该写哪个呢?在MySQL的编译中虽然不会报错,但是逻辑是错误的
     所以:在SELECT中出现的字段,必须出现在ORDER BY中进行分组,才能逻辑正确的显示出来
     */
    SELECT department_id,job_id,AVG(salary)
    FROM employees
    ORDER BY department_id;
    
  3. 连接使用WITH ROLLUP

    会对GROUP BY 后的第一个字段进行升序排列,并在所有查询记录后增加一条记录,该记录为所有查询记录之和。

    WITH ROLLUP 与 ORDER BY 不能同时使用,因为前者会产生额外一条统计记录的原因

    在这里插入图片描述

三、HAVING
  1. 使用条件

    必须跟在GROUP BY之后,与其同时使用

    适用于使用了聚合函数的筛选条件,因为WHERE中不允许使用聚合函数

  2. HAVING与WHERE对比
    优点缺点
    WHERE先筛选数据,再进行关联,执行效率高
    HAVING可以使用聚合函数进行筛选
  3. 开发中的选择

    先使用WHERE对普通条件进行筛选

    再使用HAVING对聚合函数条件筛选

  4. 使用示例

    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

e_nanxu

感恩每一份鼓励-相逢何必曾相识

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值