MySQL数据库操作篇3(聚合函数&分组查询)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL数据库操作篇3(聚合函数&分组查询)

通过MySQL提供的聚合函数,可以很方便的进行一些计算来辅助查询,所谓聚合函数就是将表中的数据统计后进行的某种处理

分组查询可以理解成将一张表按照某个属性分成多张表,属性值相同的在一张表里

比如说学生表,按照性别这个属性分组,就能分成两个表,一个男生表,一个女生表、

接下里详细了解一下有哪些聚合函数以及分组查询的具体使用

本文章用到三张表来做演示,一张学生表,一张课程表,还有一张学习表,具体定义如下图


聚合函数

1.count() 统计数目函数

这个函数用来返回查询到的数据的数量,通过用来统计有多少个数据

例如查询学生表中有多少个学生

count不会计入NULL值,如果想在统计数目是去掉重复的,可以使用distinct

例如统计名字不重复的同学的数目

select count(distinct name) from student;

2.sum()

该函数用来查询某一列的所有属性值的和,不是数字没有意义
比如查一张学习表中所有分数的总和

3.avg()

这个函数是求某个属性列的平均值,同样,如果属性列的值不是数字的话,那么就没有意义

接下来演示一下,一张学习表中,求所有成绩的平均值

4.max() , min()

查询某个属性列中最大值和最小值,同样,如果属性列中的值不是数字,那么查询结果没有意义

接下来查询成绩表中成绩最高的和成绩最低的

上面的这些聚合函数都可以加上distinct进行去重处理后再得出结果


分组查询

分组查询需要使用语句group by

这个语句可以按照指定的列进行分组,列中相同的值被分为一组,我们理解成每一组都是一张新的表,这样方便我们对后续操作的理解

什么情况下会用到分组呢?看下面这个问题

显示每一门课程的最高分数

这个问题,我们首先需要统计某一门课程总共有多少个人选,然后再统计选这门课程的最高成绩,显示出来即可,课程号以及成绩都在学习表中,如果能把相同的课程单独拎出来放在一起,那么问题就好解决了,而分组查询就是进行这样的操作

首先,我们在学习表中将课程号进行一个分组,课程号相同的放在一起,然后再统计课程号相同的同学中成绩最高的那一个,具体操作如下

select cou_id, max(grade) as max_grade from study group by cou_id;

对照查询结果可以看出,总共有4门课程,每一门的课程的最大值都显示出来了

接下来,我们将难度加大一点,查询平均分不低于80分的课程

这个问题要求我们将每门课程先求平均分,然后再进行一个筛选,如果大于80就显示

那么我们如何将分组后并求出平均值的课程再进行一个筛选呢?

这就要用到另一个语句having,having有点类似于where,都是进行条件筛选,不过having是分组进行数据的筛选,解决上面问题的语句如下

select cou_id, avg(grade) as avg_value from study group by cou_id having avg_value >= 80;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
2月前
|
算法 关系型数据库 MySQL
MySQL高级篇——排序、分组、分页优化
排序优化建议、案例验证、范围查询时索引字段选择、filesort调优、双路排序和单路排序、分组优化、带排序的深分页优化
MySQL高级篇——排序、分组、分页优化
|
2月前
|
SQL 关系型数据库 MySQL
MySQL:表的设计原则和聚合函数
本文详细介绍了数据库表设计的原则与范式,包括从需求中找到实体及其属性,确定实体间关系,并使用SQL创建具体表。文章还深入探讨了一范式、二范式和三范式的要求及不满足这些范式时可能遇到的问题。此外,文中通过实例解释了一对一、一对多和多对多关系的表设计方法,并介绍了如何使用聚合函数如 COUNT()、SUM()、AVG()、MAX() 和 MIN() 进行数据统计和分析。最后,文章还展示了如何通过 SQL 语句实现数据的复制和插入操作。
53 7
MySQL:表的设计原则和聚合函数
|
1月前
|
存储 关系型数据库 MySQL
深度剖析:MySQL聚合函数 count(expr) 如何工作?如何选择?
本文详细探讨了MySQL中count(expr)函数的不同形式及其执行效率,包括count(*)、count(1)、count(主键)、count(非主键)等。通过对InnoDB和MyISAM引擎的对比分析,解释了它们在不同场景下的实现原理及性能差异。文章还通过实例演示了事务隔离级别对统计结果的影响,并提供了源码分析和总结建议。适合希望深入了解MySQL统计函数的开发者阅读。
52 0
|
3月前
|
SQL 数据挖掘 数据处理
什么是数据库聚合函数?
【8月更文挑战第2天】
210 19
什么是数据库聚合函数?
|
3月前
|
SQL 关系型数据库 MySQL
MySQL】-DQL(基本、条件、分组、排序、分页)详细版
通过这些查询方法,你可以高效地检索、分析和组织MySQL数据库中的数据,以满足各种应用需求。实践中,理解这些SQL语句的基础知识以及它们如何组合起来进行复杂的数据操作是至关重要的。
45 1
|
4月前
|
SQL 关系型数据库 MySQL
MySQL获取分组里的最新数据如何写sql
MySQL获取分组里的最新数据如何写sql
50 0
|
4月前
|
关系型数据库 MySQL 数据挖掘
MySQL 聚合函数案例解析:深入实践与应用
MySQL 聚合函数案例解析:深入实践与应用
|
4月前
|
SQL 关系型数据库 MySQL
MySQL 聚合函数深入讲解与实战演练
MySQL 聚合函数深入讲解与实战演练
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4