• 〖Python 数据库开发实战 - MySQL篇⑰〗- 聚合函数的使用


    万叶集
    🎉 隐约雷鸣,阴霾天空。 🎉
    🎉 但盼风雨来,能留你在此。 🎉


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线(点击解锁)知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 掌握关系型与非关系数据库知识,提升数据库实战开发能力。
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。

    在这里插入图片描述


    今天的章节我们将要来学习一下 “聚合函数” ;首先我们需要学习聚合函数对数据进行统计分析,比如说求最大值、最小值、平均值之类的场景。但是单纯的使用聚合函数,只能做全表范围的统计分析。如果想要把记录分组分别统计,需要使用 “GROUP BY” 和 “HAVING” 这样的分组子句了。关于分组查询的应用,将在下一章节为大家进行讲解。当前章节我们还是学习一下 “聚合函数” 的基本使用。



    🐳 什么是聚合函数

    • 聚合函数是用来做简单的数据统计的,比如说统计一下 “员工表” 中的平均工龄是多少年啊,员工表中一共有多少条记录等等… 这些都需要使用到聚合函数。
    • 聚合函数也被称为 “汇总函数” ,在数据的查询分析中,应用的十分广泛。可以帮助我们实现对数据的求和、求最大值、求最小值、求平均值等等。
    • 如果不指定统计的范围,那么聚合函数统计的范围就是整张数据表,该章节我们所讲解的 “聚合函数” 就是针对整张数据表范围的。

    聚合函数演示案例:(求员工表中的平均月收入是多少?)

    SELECT AVG(sal + IFNULL(comm,0)) AS 平均工资
    from t_emp;
    
    -- AVG:聚合函数,求平均值使用
    -- IFNULL:IFNULL 函数的语法,当第一个参数的值为null 的时候,则返回第二个参数的值
    
    • 1
    • 2
    • 3
    • 4
    • 5

    PS:需要注意的地方,在聚合函数的返回结果集(无论是求和、最大值、最小值、还是求平均数),结果集只有一个返回数据。



    🐬 SUM 函数


    • SUN 函数用于求和,只能用于数字类型;如果用于字符类型的数据,则统计结果为0;如果用于时间类型的数据的求和,则结果是毫秒数的相加。

    SQL 语句演示 SUM函数 案例(统计 10、20 部门的员工的月薪的总和)

    SELECT SUM(sal)
    FROM t_emp
    WHERE deptno IN (10, 20)
    
    • 1
    • 2
    • 3

    SQL 语句演示 SUM函数 案例(统计 ename(字段) 的综合 )

    SELECT SUM(ename)
    FROM t_emp
    WHERE deptno IN (10, 20)
    
    • 1
    • 2
    • 3


    🐬 MAX 函数


    • MAX 函数用于获取非空值的最大值。
    SELECT MAX(comm) FROM t_emp;
    
    -- 比如这种想要获取 "comm" 字段的非空的最大值,直接套一个 MAX() 函数即可。
    
    • 1
    • 2
    • 3

    SQL 语句演示 MAX函数 案例(查询 10、20 部门的月收入最高的员工)

    SELECT MAX(sal + IFNULL(comm,0)) AS max_sal
    FROM t_emp
    WHERE deptno IN (10, 20)
    
    -- MAX:聚合函数,求最大值使用
    -- IFNULL:IFNULL 函数的语法,当第一个参数的值为null 的时候,则返回第二个参数的值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    SQL 语句演示 MAX函数 案例(查询 员工姓名 最长的名字的长度)

    SELECT MAX(LENGTH(ename)) AS length_ename
    FROM t_emp;
    
    -- LENGTH:LENGTH函数可以统计字符的个数计算其长度
    
    • 1
    • 2
    • 3
    • 4


    🐬 MIN 函数


    • 与MAX 函数对应的是 MIN 函数,用于获得非空值的最小值。

    SQL语句演示 MIN函数 案例(查询 员工编号最小 的员工)

    SELECT MIN(empno) AS min_empno
    FROM t_emp;
    
    • 1
    • 2

    SQL语句演示 MIN函数 案例(查询 最早入职 的员工)

    SELECT MIN(hiredate) AS min_hiredate
    FROM t_emp;
    
    • 1
    • 2


    🐬 AVG 函数


    • 在上文我们已经演示过了 AVG 函数的使用方法,AVG 函数是用于获得非空值的平均值;如果用于非数字数据的统计,输出结果为 0 。

    聚合函数演示案例:(求员工表中的平均月收入是多少?)

    SELECT AVG(sal + IFNULL(comm,0)) AS 平均工资
    from t_emp;
    
    -- AVG:聚合函数,求平均值使用
    -- IFNULL:IFNULL 函数的语法,当第一个参数的值为null 的时候,则返回第二个参数的值
    
    • 1
    • 2
    • 3
    • 4
    • 5


    🐬 COUNT 函数


    • COUNT 函数用于获得记录的数量,COUNT 函数有两种用法。
      • 第一种:在 COUNT() 函数的 括号内,输入一个 “*” 即可,记录下包含空值的查询记录的数量。示例:COUNT(*)
      • 第二种:在 COUNT() 函数的 括号内,输入要统计的列名即可,记录下包含非空值的查询的记录的数量。示例:COUNT(列名)

    SQL语句演示 COUNT(*) 案例

    SELECT COUNT(*) FROM t_emp;
    
    • 1

    SQL语句演示 COUNT(列名) 案例

    SELECT COUNT(comm) FROM t_emp;
    
    • 1


    🐳 聚合函数综合小练习



    🐬 聚合函数综合练习 -1


    SQL 案例1 - 语句演示:(查询 10、20部门中,底薪超过 2000 并且工龄超过 15年 的员工人数)

    SELECT COUNT(*) 
    FROM t_emp
    WHERE deptno IN (10, 20)
    AND sal >= 2000
    AND DATEDIFF(NOW(),hiredate)/365 >= 15;
    
    • 1
    • 2
    • 3
    • 4
    • 5



    🐬 聚合函数综合练习 -2


    SQL 案例2 - 语句演示:(查询 1985年之后入职的员工,并且底薪超过公司平均底薪的员工的数量)

    SELECT COUNT(*) 
    FROM t_emp
    WHERE hiredate >= "1985-01-01"
    AND sal >= AVG(sal)
    
    • 1
    • 2
    • 3
    • 4
    • PS:表面上看这个 SQL 是正常的,但是这个 SQL 语是无法得出想要的结果的,因为语法上有错误。WHERE 子句中出现了聚合函数,这一点大家一定要注意,聚合函数 一定不能出现在 WHERE 子句中。

    • PS:WHERE 子句中不能出现 聚合函数 的根本原因还要从 子句的执行顺序来说起。sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;

    • PS:聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误。

    • PS:关于如何解决这个问题,将在下一章节的 "分组查询的应用" 进行详细的讲解。



  • 相关阅读:
    布隆过滤器在项目中的使用
    数据挖掘知识点整理(期末复习版)
    DDD(领域驱动设计)
    使用亚马逊云服务器在 G4 实例上运行 Android 应用程序
    无序标签的使用
    微信小程序获取用户手机号码
    【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配
    Unity Spine 指定导入新Spine动画的默认材质
    c++ SFML ftp重命名文件
    go中的panic defer recover
  • 原文地址:https://blog.csdn.net/weixin_42250835/article/details/126005532