滚雪球学MySQL[3.2讲]:MySQL聚合函数与分组详解:COUNT、SUM、AVG、MAX、MIN及GROUP BY与HAVING

embedded/2024/10/3 23:46:27/

全文目录:

    • 前言
    • 3.2 聚合函数与分组
      • 1. COUNT、SUM、AVGMAXMIN等常用聚合函数
        • 1.1 COUNT函数
          • 基本语法
          • 示例1:统计学生表中的总记录数
          • 示例2:统计特定条件下的记录数
        • 1.2 SUM函数
          • 基本语法
          • 示例1:计算总成绩
        • 1.3 AVG函数
          • 基本语法
          • 示例1:计算学生的平均成绩
        • 1.4 MAX函数
          • 基本语法
          • 示例1:查询最高分
        • 1.5 MIN函数
          • 基本语法
          • 示例1:查询最低分
      • 2. GROUP BY 与 HAVING 分组与筛选
        • 2.1 GROUP BY 语句
          • 基本语法
        • 示例1:按专业统计学生人数
        • 示例2:按专业计算平均成绩
        • 2.2 HAVING 语句
          • 基本语法
        • 示例1:筛选出学生人数大于5的专业
        • 示例2:筛选出平均成绩高于80的专业
      • 3. 聚合函数与分组的高级应用
        • 3.1 多字段分组
        • 3.2 使用CASE与聚合函数
      • 结语与下期预告

前言

在上一期的学习中,我们详细探讨了MySQL的多表查询(3.1),包括内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN)以及多表联合查询的技巧。通过这些知识,你已经能够在多个表之间进行数据关联和查询,为复杂的数据提取和分析打下了坚实的基础。

然而,随着数据量的增长,简单的查询往往无法满足我们的需求。在实际应用中,我们不仅需要从多个表中提取数据,还常常需要对这些数据进行统计分析。为了满足这些需求,MySQL提供了一系列强大的聚合函数,如COUNTSUMAVGMAXMIN等,用于对数据进行汇总、求和、取平均值和查找最大、最小值等操作。此外,结合GROUP BYHAVING语句,我们可以对数据进行分组,并对分组后的数据应用条件过滤。

本期内容将深入探讨MySQL中的聚合函数与分组操作(3.2),通过具体的示例帮助你全面掌握这些重要的SQL功能,提升你在数据统计和分析方面的技能。

在本期内容结束后,下一期我们将继续深入数据库的高级查询技巧,探讨如何进行复杂查询(3.3),进一步提升数据库的处理能力。

3.2 聚合函数与分组

AVGMAXMIN_14">1. COUNT、SUM、AVGMAXMIN等常用聚合函数

聚合函数是用于对一组值进行计算并返回单个值的函数,广泛用于数据分析中。MySQL支持多种聚合函数,下面我们将分别介绍最常用的五种。

1.1 COUNT函数

COUNT函数用于统计行数,通常用于计算满足特定条件的记录数。

基本语法
SELECT COUNT(列名) FROM 表名 WHERE 条件;
示例1:统计学生表中的总记录数

假设我们有一个名为students的表,包含学生的idnameage等信息。我们可以通过COUNT函数统计表中学生的总数:

SELECT COUNT(*) FROM students;

这将返回students表中的总记录数。

示例2:统计特定条件下的记录数

如果我们只想统计年龄大于20岁的学生数量,可以在WHERE条件中指定:

SELECT COUNT(*) FROM students WHERE age > 20;
1.2 SUM函数

SUM函数用于对一列数值进行求和操作,常用于计算总金额、总数等数据。

基本语法
SELECT SUM(列名) FROM 表名 WHERE 条件;
示例1:计算总成绩

假设我们有一个grades表,包含学生的成绩信息。我们可以通过SUM函数计算所有学生的总成绩:

SELECT SUM(score) FROM grades;
AVG_64">1.3 AVG函数

AVG函数用于计算某列数值的平均值,常用于统计平均成绩、平均工资等数据。

基本语法
SELECT AVG(列名) FROM 表名 WHERE 条件;
示例1:计算学生的平均成绩

我们可以使用AVG函数来计算所有学生的平均成绩:

SELECT AVG(score) FROM grades;
MAX_82">1.4 MAX函数

MAX函数用于查找某列的最大值,常用于获取最高分、最高工资等信息。

基本语法
SELECT MAX(列名) FROM 表名 WHERE 条件;
示例1:查询最高分

如果我们想查找最高的学生成绩,可以使用MAX函数:

SELECT MAX(score) FROM grades;
MIN_100">1.5 MIN函数

MIN函数用于查找某列的最小值,常用于获取最低分、最低工资等信息。

基本语法
SELECT MIN(列名) FROM 表名 WHERE 条件;
示例1:查询最低分

同样,我们可以使用MIN函数查找最低的学生成绩:

SELECT MIN(score) FROM grades;

2. GROUP BY 与 HAVING 分组与筛选

在实际工作中,除了对所有数据进行汇总分析外,我们经常需要对数据进行分组,然后对每个分组进行聚合计算。这时就需要用到GROUP BY语句。

2.1 GROUP BY 语句

GROUP BY用于将查询结果按照一个或多个列进行分组,并对每个分组进行聚合计算。它通常与聚合函数一起使用。

基本语法
SELECT1, 聚合函数(2) FROM 表名 WHERE 条件 GROUP BY1;
示例1:按专业统计学生人数

假设我们有一个学生表,包含学生的专业信息。现在我们希望统计每个专业的学生人数:

SELECT major, COUNT(*) AS student_count 
FROM students 
GROUP BY major;

此查询将根据major列对学生进行分组,并统计每个专业的学生人数。

示例2:按专业计算平均成绩

假设我们有一个包含学生成绩的表,我们希望计算每个专业的平均成绩。可以使用以下查询:

SELECT major, AVG(score) AS average_score 
FROM students 
JOIN grades ON students.id = grades.student_id
GROUP BY major;

此查询会返回每个专业的平均成绩。

2.2 HAVING 语句

HAVING用于对分组后的数据进行过滤。与WHERE不同,HAVING是用于过滤聚合结果的。

基本语法
SELECT1, 聚合函数(2) FROM 表名 WHERE 条件 GROUP BY1 HAVING 聚合函数(2) 条件;
示例1:筛选出学生人数大于5的专业

假设我们希望只显示学生人数超过5人的专业:

SELECT major, COUNT(*) AS student_count 
FROM students 
GROUP BY major 
HAVING COUNT(*) > 5;

此查询会筛选出学生人数大于5的专业。

示例2:筛选出平均成绩高于80的专业

如果我们想要筛选出平均成绩大于80分的专业,可以使用HAVING语句:

SELECT major, AVG(score) AS average_score 
FROM students 
JOIN grades ON students.id = grades.student_id
GROUP BY major 
HAVING AVG(score) > 80;

3. 聚合函数与分组的高级应用

聚合函数和分组操作是数据库分析的核心功能,特别是在大数据分析中,常常用于生成报表和分析数据趋势。以下是几个常见的高级应用场景。

3.1 多字段分组

除了按单个字段分组外,我们还可以按多个字段分组。例如,统计每个年级中不同专业的学生人数:

SELECT grade, major, COUNT(*) AS student_count 
FROM students 
GROUP BY grade, major;
3.2 使用CASE与聚合函数

我们可以结合CASE语句与聚合函数进行条件汇总。例如,统计男生和女生的人数:

SELECT SUM(CASE WHEN gender = 'Male' THEN 1 ELSE 0 END) AS male_count,SUM(CASE WHEN gender = 'Female' THEN 1 ELSE 0 END) AS female_count
FROM students;

这种技术在需要根据特定条件进行分类统计时非常有用。

结语与下期预告

通过本期的学习,你已经掌握了MySQL中的聚合函数与分组操作,并了解了如何使用COUNTSUMAVGMAXMIN等函数进行数据汇总分析,以及如何结合GROUP BYHAVING语句对数据进行分组与筛选。这些知识是数据库分析的核心技能,尤其适用于统计、数据挖掘等场景。

在下期内容中,我们将进一步探讨复杂查询(3.3),包括子查询、联合查询和嵌套查询等技术,帮助你在更复杂的场景中处理数据。敬请期待!


http://www.ppmy.cn/embedded/121082.html

相关文章

C++入门(有C语言基础)

string类 string类初始化的方式大概有以下几种: string str1;string str2 "hello str2";string str3("hello str3");string str4(5, B);string str5[3] {"Xiaomi", "BYD", "XPeng"};string str6 str5[2];str…

Elasticsearch 使用误区之六——富文本内容写入前不清洗

0、引言 在很多应用场景中,我们会将富文本内容(如 HTML 格式的网页内容)存储到 Elasticsearch 中,以实现全文检索。 然而,在实际使用过程中,我们可能会遇到一些问题,比如在检索时,HT…

联想天逸100使用笔记

文章目录 配置整理过程锁定功能键怎么弄? 翻出好多年不用的老电脑,饱受折磨,做个笔记。 之前不是我在使用,本身配置就不高,还被装了各种流氓软件,卡的几乎动不了。 配置 老电脑配置不行: i3 5005U 4G内存…

Mybatis(进阶部分)

四 Mybatis完成CURD(二) 4.5 多条件CRUD 之前的案例中,接口里方法的形参个数都是1个;如果方法形参是两个或者两个以上时,MyBatis又该如何获取获取参数呢? Mybatis提供了好几种方式,可以获取多…

Windows环境 源码编译 FFmpeg

记录一下windows环境纯代码编译ffmeg的过程! 目录 一、安装MSYS2 1.下载安装 2.配置 3.修改源 4.测试与更新 二、安装其他必要工具 1.安装MinGW-w64 2.安装git 3..安装make等工具 4.编译前的其他准备工作 ①.重命名link.exe ②.下载和安装YASM ③.安装…

【漏洞复现】泛微OA E-Office /E-mobile/App/init.php 任意文件上传漏洞

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…

K8S精进之路-控制器DaemonSet -(3)

介绍 DaemonSet就是让一个节点上只能运行一个Daemonset Pod应用,每个节点就只有一个。比如最常用的网络组件,存储插件,日志插件,监控插件就是这种类型的pod.如果集群中有新的节点加入,DaemonSet也会在新的节点创建出来…

滚雪球学MySQL[8.2讲]:MySQL事件调度详解:定时任务的创建与管理及使用场景

全文目录: 前言8.2 MySQL事件调度1. 定时任务的创建与管理1.1 启用事件调度器1.2 创建定时任务1.2.1 一次性任务1.2.2 周期性任务1.2.3 管理事件的有效期 1.3 修改与删除事件1.3.1 修改事件1.3.2 删除事件 1.4 查看事件状态与执行日志 2. 事件调度器的使用场景2.1 数…