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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 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;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
1月前
|
存储 关系型数据库 MySQL
MySQL中实施排序(sorting)及分组(grouping)操作的技巧。
使用这些技巧时,需要根据实际的数据量、表的设计和服务器性能等因素来确定最合适的做法。通过反复测试和优化,可以得到最佳的查询性能。
161 0
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
186 0
|
10月前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
算法 关系型数据库 MySQL
MySQL高级篇——排序、分组、分页优化
排序优化建议、案例验证、范围查询时索引字段选择、filesort调优、双路排序和单路排序、分组优化、带排序的深分页优化
MySQL高级篇——排序、分组、分页优化
|
SQL 关系型数据库 MySQL
MySQL:表的设计原则和聚合函数
本文详细介绍了数据库表设计的原则与范式,包括从需求中找到实体及其属性,确定实体间关系,并使用SQL创建具体表。文章还深入探讨了一范式、二范式和三范式的要求及不满足这些范式时可能遇到的问题。此外,文中通过实例解释了一对一、一对多和多对多关系的表设计方法,并介绍了如何使用聚合函数如 COUNT()、SUM()、AVG()、MAX() 和 MIN() 进行数据统计和分析。最后,文章还展示了如何通过 SQL 语句实现数据的复制和插入操作。
154 7
MySQL:表的设计原则和聚合函数
|
SQL 数据挖掘 数据处理
什么是数据库聚合函数?
【8月更文挑战第2天】
763 19
什么是数据库聚合函数?
|
11月前
|
存储 关系型数据库 MySQL
深度剖析:MySQL聚合函数 count(expr) 如何工作?如何选择?
本文详细探讨了MySQL中count(expr)函数的不同形式及其执行效率,包括count(*)、count(1)、count(主键)、count(非主键)等。通过对InnoDB和MyISAM引擎的对比分析,解释了它们在不同场景下的实现原理及性能差异。文章还通过实例演示了事务隔离级别对统计结果的影响,并提供了源码分析和总结建议。适合希望深入了解MySQL统计函数的开发者阅读。
151 0
|
SQL 关系型数据库 MySQL
MySQL】-DQL(基本、条件、分组、排序、分页)详细版
通过这些查询方法,你可以高效地检索、分析和组织MySQL数据库中的数据,以满足各种应用需求。实践中,理解这些SQL语句的基础知识以及它们如何组合起来进行复杂的数据操作是至关重要的。
141 1
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
116 2
|
SQL 关系型数据库 MySQL
MySQL获取分组里的最新数据如何写sql
MySQL获取分组里的最新数据如何写sql
136 0

热门文章

最新文章

推荐镜像

更多