SQL中的聚合函数有哪些

在 SQL 中,聚合函数 是用来对一组数据进行计算并返回单个结果的函数,它通常和 GROUP BY 子句配合使用(也可单独用于整张表)。下面我会由浅入深地介绍常用的聚合函数,并用简单示例帮助你理解。

一、常用聚合函数及用法

1. 基础统计类

表格

函数 作用 示例(基于 students 表,含 score 字段)
COUNT() 统计行数(非 NULL 值的数量) SELECT COUNT(*) FROM students;(统计总人数)SELECT COUNT(score) FROM students;(统计有成绩的人数)
SUM() 计算数值列的总和 SELECT SUM(score) FROM students;(计算所有学生成绩总和)
AVG() 计算数值列的平均值 SELECT AVG(score) FROM students;(计算平均成绩)
MAX() 找出列中的最大值 SELECT MAX(score) FROM students;(找出最高分)
MIN() 找出列中的最小值 SELECT MIN(score) FROM students;(找出最低分)
2. 进阶聚合函数(部分数据库支持)
  • GROUP_CONCAT()(MySQL 特有):将分组后的字段值拼接成字符串示例:SELECT class, GROUP_CONCAT(name) FROM students GROUP BY class;(按班级拼接学生姓名)
  • STDDEV() / STD():计算标准差(衡量数据离散程度)示例:SELECT STDDEV(score) FROM students;
  • VARIANCE():计算方差(标准差的平方)示例:SELECT VARIANCE(score) FROM students;
  • AVG(DISTINCT 列名):计算去重后的平均值(SUM/COUNT 也支持 DISTINCT)示例:SELECT AVG(DISTINCT score) FROM students;(去重后计算平均成绩)

二、核心使用规则

  1. NULL 值处理 :所有聚合函数都会自动忽略 NULL 值(除了 COUNT(*),它会统计所有行,包括 NULL)。比如:若某学生 score 为 NULL,SUM(score) 不会把它算成 0,而是直接跳过。

  2. 配合 GROUP BY :聚合函数常和 GROUP BY 分组使用,实现 "按组统计"。示例:按班级统计平均分

    sql

    复制代码
    SELECT class, AVG(score) AS avg_score 
    FROM students 
    GROUP BY class;
  3. 过滤聚合结果 :用 HAVING 而非 WHERE 过滤聚合后的结果(WHERE 过滤原始数据)。示例:找出平均分大于 80 的班级

    sql

    复制代码
    SELECT class, AVG(score) AS avg_score 
    FROM students 
    GROUP BY class 
    HAVING avg_score > 80;

总结

  1. 核心聚合函数:COUNT()(统计行数)、SUM()(求和)、AVG()(平均值)、MAX()(最大值)、MIN()(最小值),是日常开发中最常用的。
  2. 聚合函数会忽略 NULL 值,且分组统计需配合 GROUP BY,过滤聚合结果用 HAVING。
  3. 进阶函数(如 GROUP_CONCAT、STDDEV)需根据具体数据库(MySQL/Oracle/SQL Server)选择使用。
相关推荐
一只鹿鹿鹿4 小时前
政务外网整体设计方案(PPT)
大数据·数据库·web安全·系统安全·流程图·政务
2603_965148114 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
AI砖家4 小时前
安全进入 Agent Loop:2027 年 Coding Agent 的决胜点
数据库·安全·codex·vibecoding
wangqiaowq4 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec5 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
数字新视界5 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB技术团队5 小时前
冷热分层从建到验:Storage Policy 创建、表级与分区级绑定、SHOW TABLETS 验证的完整命令
大数据·数据库·elasticsearch·搜索引擎·数据分析·apache doris·冷热分层
YangYang9YangYan7 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
lambo mercy7 小时前
Day3:结构化输出
java·数据库·oracle
派小心.7 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析