千家信息网

mysql如何分组求和

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"mysql如何分组求和"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在mysql中,
千家信息网最后更新 2026年10月31日mysql如何分组求和

本篇内容介绍了"mysql如何分组求和"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在mysql中,可以利用SELECT语句配合SUM()函数和"GROUP BY"来分组求和,语法为"SELECT 查询字段 SUM(求和字段) AS 字段 FROM 表名 WHERE 条件 GROUP BY 分组字段一,分组字段二;"。

本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。

mysql怎么分组求和

在mysql中,可以利用

SELECT 查询字段 SUM(求和字段) AS 字段 FROM 表名 WHERE 条件 GROUP BY 分组字段一,分组字段二;

来进行分组求和。

示例如下:

1)count() 求某列的行数

很容易理解,count(列名)就是求某列的行数,值得注意的一点是该列不会计算空值的行数。举例:

>-- 查询共有几名教师

>-- 查询教师表共有多少行 SELECT COUNT(*) FROM teacher;

如果列中有重复值,我们计数不想计算重复值,怎么办呢?我们可以使用distinct来解决:

-- 查询成绩表里共有几个学生的成绩SELECT COUNT(DISTINCT 学号) FROM score;

2)sum() 对某列数据求和

求和,就是对某一列的数值进行求和,只能对数值进行计算。举例:

--  对所有成绩求和SELECT SUM(成绩) FROM score;

3)avg() 对某列数值求平均值

同样,平均值的计算只能对数值进行计算:

-- 对所有成绩求平均值SELECT AVG(成绩) FROM score;

4)max() 求某列数据的最大值、min() 求某列数据的最小值

-- 获取所有成绩中的最大成绩SELECT MAX(成绩),MIN(成绩) FROM score;

分组

问题中,我们提到,需要知道每科成绩的平均成绩,那么我们就需要进行分组。

SQL中,group by语句可以根据一列或者多列对结果集进行分组。举例:

-- 计算每一科课程的平均成绩SELECT 课程号,AVG(成绩) FROM score GROUP BY 课程号;

在上篇文章中,我们就有简单的介绍SQL语句执行顺序:先执行from从哪个表获取数据,再执行select语句;

这里我们从成绩表获取数据,使用group by语句将数据按某种规则进行分组;然后在分组的结果上进行计算count();最后select组合结果,把上一步的每一组计算结果总结到一个表中。

对分组条件指定条件

在一开始的问题里,要求"计算各科的平均成绩并且得出平均成绩大于等于80分",以上两节我们得到了计算每天一科的平均成绩,现在对平均成绩指定条件:"大于等于80分",我们使用having子句。

having子句与where子句都是有条件的选取数据,不同的是where不能与汇总函数一起使用。

-- 计算平均成绩大于等于80分的课程;SELECT 课程号,AVG(成绩) FROM score GROUP BY 课程号 HAVING AVG(成绩)>=80;

那是不是说,having子句的顺序也是在select结果汇总的前边呢?是的,having子句是对group by 的分组结果指定条件,比如要求大于等于80分,筛选出结果后,在进行结果汇总。

-- 对教师表根据教师姓名排序SELECT * FROM teacher ORDER BY 教师姓名;

我们发现,空值Null排在了最前面,所以:含有空值的列在排序时候,空值null会在开头,当数据量很大想看空值的情况,就可以用这个排序。

另外,在补充一个limit语句,从查询结果中取出指定行,比如,我们如果从刚才的查询结果中只取第一行:

-- 计算平均成绩大于等于80分的课程并根据成绩降序排,并获取第一行SELECT 课程号,AVG(成绩) FROM score GROUP BY 课程号 HAVING AVG(成绩)>=80 ORDER BY AVG(成绩) DESC LIMIT 1;

接下来我们进行一个总结。

用SQL解决业务问题分析思路

简单来说:明确问题,将问题翻译成大白话,逐步进行拆解,并写出分析思路和对应的SQL思路。

1) 明确问题,将问题翻译成大白话:

"计算各科的平均成绩并且得出平均成绩大于等于80分的课程并降序排列"翻译成大白话就是:

"计算每一门课程的平均成绩,然后根据得出的结果,进行大于等于80分的条件查询,对查询结果进行降序排列"。

2) 逐步进行拆解,并写出分析思路和对应的SQL思路:

① 对课程号进行分组,计算每一门课程的平均成绩;

② 对①的结果指定条件">=80";

③ 对②的结果进行降序排列;

我们可以把拆解后的思路套用到下方的公式中:

select 查询结果from 从那张表中查找数据where 查询条件(运算符、模糊查询)group by 分组(每个)having 对分组结果指定条件order by 对查询结果排序limit 从查询结果中取出指定行;

试一下吧:

select 查询结果[课程号,avg(成绩)]from 从那张表中查找数据[成绩表score]where 查询条件(运算符、模糊查询)[No]group by 分组(每个)[课程号]having 对分组结果指定条件[avg(成绩)>=80]order by 对查询结果排序[avg(成绩)desc]limit 从查询结果中取出指定行;[No]

"mysql如何分组求和"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

成绩 结果 分组 查询 课程 条件 字段 数据 问题 思路 语句 子句 排序 数值 大白 大白话 就是 平均值 教师 分析 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 广州淘业互联网络科技 广州万易互联网科技有限公司 中关村互联网 科技集团 科技平台互联网 与互联网科技公司 互联网未来科技 美国互联网黑科技 广州善班互联网科技 哈尔滨新华互联网科技 济南华为互联网科技产业总部基地 银川新华互联网科技职业技术培训学校图片 互联网企业和科技型企业 互联网科技创新服务 深圳市优智互联网科技有限公司 青海科技产业互联网发展 朱啸虎曾投资哪些互联网科技企业 中科明德北京互联网科技 互联网公司高科技产品 互联网科技融合创新 互联网科技工作委员会毛军 智能科技公司是互联网公司吗 合肥互联网科技公司 互联网科技公司介绍 金融科技和互联网金融 青海省互联网新科技 链环科技传统企业怎么转型互联网 每天都有哪些好的互联网科技 2021世界互联网领先科技成果发布 银川新华互联网科技学校原画
0