SQL 聚合函数
SQL 聚合函数 · 难度:进阶 · +15XP
SQL 聚合函数
聚合函数(Aggregate Functions)对一组行进行计算,返回单个结果值。它们是数据统计、报表分析的核心工具,常与GROUP BY配合使用。
五大聚合函数
| 函数 | 作用 | 示例 |
|---|---|---|
COUNT() | 统计行数 | SELECT COUNT(*) 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 |
COUNT 详解
-- COUNT(*) 统计所有行(包括NULL)
SELECT COUNT(*) FROM students; -- 总学生数
-- COUNT(列名) 统计该列非NULL的行数
SELECT COUNT(email) FROM students; -- 有邮箱的学生数
-- COUNT(DISTINCT 列名) 统计不重复值的个数
SELECT COUNT(DISTINCT city) FROM students; -- 有几个不同的城市
综合示例
-- 一次性统计多个指标
SELECT
COUNT(*) AS 总人数,
AVG(score) AS 平均分,
MAX(score) AS 最高分,
MIN(score) AS 最低分,
SUM(score) AS 总分
FROM students
WHERE score >= 60; -- 只统计及格的学生
聚合函数注意事项
-- 错误:聚合函数和普通列不能混用(除非GROUP BY)
SELECT name, MAX(score) FROM students; -- 错误!
-- 正确:用子查询获取最高分的学生
SELECT name, score FROM students
WHERE score = (SELECT MAX(score) FROM students);
-- NULL 值处理
-- SUM、AVG、MAX、MIN 忽略 NULL 值
-- COUNT(*) 不忽略 NULL,COUNT(列名) 忽略 NULL
实战练习
- 统计学生总人数、平均分、最高分、最低分
- 统计来自南宁的学生平均成绩
- 计算及格率(及格人数÷总人数)
- 找出成绩高于平均分的学生名单