SQL语言AVG函数如何求平均值

来源:IPIPP.com作者:头衔:全栈工程师
导读:本期聚焦于小伙伴创作的《SQL语言AVG函数如何求平均值》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《SQL语言AVG函数如何求平均值》有用,将其分享出去将是对创作者最好的鼓励。

在数据库的日常查询中,我们经常需要统计某列数值的平均情况,比如统计学生平均成绩、商品平均价格等,这时候SQL的AVG函数就能派上用场。它是SQL中用于计算平均值的内置聚合函数,使用起来非常简单高效。

SQL语言AVG函数如何求平均值

AVG函数基础语法

AVG函数的基本语法格式如下,它会对指定列的所有非NULL值进行计算,最终返回平均值结果:

-- 基础语法,计算指定列的平均值
SELECT AVG(列名) FROM 表名;

需要注意的是,AVG函数会自动忽略列中的NULL值,不会把NULL纳入计算范围,如果列中所有值都是NULL,那么函数会返回NULL结果。

不同场景下的使用方式

1. 单表无筛选求平均值

如果我们想直接计算某张表中某列的整体平均值,不需要额外筛选条件,直接用基础语法即可。比如有一张学生成绩表score,里面包含学生ID和语文成绩chinese_score,要计算所有学生的语文平均成绩:

-- 计算所有学生的语文平均成绩
SELECT AVG(chinese_score) AS avg_chinese FROM score;

这里用AS给计算结果起了别名avg_chinese,方便后续查看结果时明确列的含义。

2. 带条件筛选求平均值

如果只需要计算符合特定条件的数据的平均值,可以搭配WHERE子句使用。比如要计算语文成绩大于80分的学生平均成绩:

-- 计算语文成绩大于80分的学生平均成绩
SELECT AVG(chinese_score) AS avg_chinese_high FROM score WHERE chinese_score > 80;

3. 分组计算平均值

当我们需要按某个维度分组计算平均值时,可以结合GROUP BY子句使用。比如score表中还有班级字段class_id,要按班级计算各班语文平均成绩:

-- 按班级分组计算语文平均成绩
SELECT class_id, AVG(chinese_score) AS class_avg_chinese FROM score GROUP BY class_id;

使用注意事项

  • AVG函数只能用于数值类型的列,如果用于字符串或者日期类型的列,查询结果会报错。
  • 如果想要保留小数的位数,可以结合ROUND函数使用,比如ROUND(AVG(chinese_score), 2)可以保留两位小数。
  • 如果需要把NULL值当作0参与计算,可以先用COALESCE函数把NULL转换成0,再使用AVG函数,比如AVG(COALESCE(chinese_score, 0))

和其他平均值计算方式的对比

除了用AVG函数,我们也可以手动用SUM函数加COUNT函数计算平均值,公式是SUM(列名)/COUNT(列名),但这种方式需要注意NULL值的处理,而AVG函数已经内置了忽略NULL的逻辑,使用起来更简便,也不容易出错。比如手动计算平均成绩的写法如下:

-- 手动计算平均成绩,注意这里COUNT会统计非NULL的行数,和AVG逻辑一致
SELECT SUM(chinese_score)/COUNT(chinese_score) AS manual_avg FROM score;

不过如果列中存在NULL值,手动计算的方式如果没做处理,很容易和AVG函数的结果出现偏差,所以优先推荐使用AVG函数来计算平均值。

SQLAVG函数平均值计算数据库查询修改时间:2026-05-28 00:41:21

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。