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

news/2024/12/21 21:01:00/

全文目录:

    • 前言
    • 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/news/1534050.html

相关文章

[每周一更]-(第117期):硬盘分区表类型:MBR和GPT区别

文章目录 1. **支持的磁盘容量**2. **分区数量**3. **引导方式**4. **冗余和数据恢复**5. **兼容性**6. **安全性**7. **操作系统支持**8. 对比 国庆假期前补一篇 在一次扫描机械硬盘故障的问题,发现我本机SSD和机械硬盘的分类型不一样,分别是GPT和MBR&a…

从0学习React(1)

上次在写关于index.tsx的解析的文章的时候,写着写着我突然发现文章太长了,以至于我把代码的很多细节都给忽略掉,只把index.tsx文件的大致结构给写了出来。所以接下来的几篇文章,我将会把index.tsx分成很多个部分,我争取…

知识图谱入门——6:Cypher 查询语言高级组合用法(查询链式操作、复杂路径匹配、条件逻辑、动态模式创建,以及通过事务控制和性能优化处理大规模数据。

在熟悉 Cypher 的基本操作后,复杂查询场景中的高级用法可以帮助你充分利用 Neo4j 图数据库的强大功能。这些组合用法涉及查询链式操作、复杂路径匹配、条件逻辑、动态模式创建,以及通过事务控制和性能优化处理大规模数据。 文章目录 1. 使用 WITH 管道式…

Qt C++设计模式->责任链模式

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象有机会处理请求,而不需要明确指定哪个对象处理。通过将这些对象连成一条链,请求沿着链传递,直到有对象处理它为止。该模式…

长期提供APX515/B原装二手APX525/B音频分析仪

Audio Precision APx515 是一款针对生产测试而优化的高性能音频分析仪。它因其速度、性能、自动化和易用性而成为一流的仪器。它具有卓越的性能,具有 –106 dB 的典型 THDN、1M 点 FFT 和 192k 数字 I/O,以及所有 APx 系列音频分析仪的一键式自动化和易用…

【Linux】Docker下载与使用-nginx

目录 一、Docker介绍 二、Docker结构 三、下载Daocker 1. 在linux上下载docker,执行以下命令即可: 2. 开启docker 3. 执行以下操作并进行使用 四、在Docker上安装nginx 一、Docker介绍 Docker:是给予Go语言实现的开源项…

【Ubuntu】使用阿里云apt源来更新apt源

1.前言 我在京东云买了一个云服务器,但是我第一次使用apt的时候,发现遇到了下面这些情况 后面听老师讲,还需要执行下面这个 但是我再次使用apt下载软件的时候,还是出现了下面这个情况 后面问了老师才知道是apt源的问题&#x…

安全点的应用场景及其原理详解

引言 在Java虚拟机(JVM)运行的过程中,有些时刻,系统需要暂停所有正在运行的线程,以执行某些全局操作或确保数据的一致性。这些暂停线程的时刻被称为**“安全点”**(Safepoint)。尽管安全点最广…