告别手动统计!聚合函数实战指南|转行学DB第7天

本文涉及的产品
PolarClaw,2核4GB
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 数据库小学妹带你轻松掌握SQL统计!告别手动数数据,用COUNT、AVG等聚合函数+GROUP BY分组+HAVING筛选,三步搞定人数、均分、最高分等汇总需求。附实战案例与避坑指南,让数据分析像设计软件统计面板一样直观简单~

告别一行行数数据,一招搞定统计汇总

大家好呀!我是数据库小学妹👋一个正在从设计转行学数据库的"萌新"。

前几篇我们学了怎么查数据、怎么排序、怎么筛选、怎么连表。但有个问题一直困扰我:

如果我想知道“班里有多少人?”
“数学平均分是多少?”
“每个部门各有几个员工?”
……
难道要一行行去数吗?

当然不是!今天我就把自己学到的数据汇总神器分享出来,让你用几句SQL就能搞定统计。


一、从一个真实场景说起

假设你有一张学生成绩表 score,记录了每个学生的姓名、班级、科目和分数。

name class subject score
小明 1班 数学 90
小红 1班 数学 85
小刚 2班 数学 92
小明 1班 语文 88
小红 1班 语文 90
小刚 2班 语文 86

问:“1班数学考试有多少人参加?平均分多少?最高分是多少?”

如果用Excel,你可能需要筛选、拖公式。但在数据库里,聚合函数一键就可以搞定。


二、五大聚合函数:统计界的“五虎将”

聚合函数就是对一组数据做计算,返回一个单一结果。就像用计算器求和、求平均一样。
💡如果从设计师的视角来说,聚合函数就像设计软件里面的 统计面板——一键显示图层数量、颜色数量、文件大小。
image_2.png

🛠️实战演练

-- 1班数学考试有多少人?
SELECT COUNT(*) FROM score 
WHERE class = '1班' AND subject = '数学';
-- 结果:2(小明和小红)

-- 1班数学平均分是多少?
SELECT AVG(score) FROM score 
WHERE class = '1班' AND subject = '数学';
-- 结果:(90+85)/2 = 87.5

-- 1班数学最高分?
SELECT MAX(score) FROM score 
WHERE class = '1班' AND subject = '数学';
-- 结果:90

💡 小细节:COUNT(*) 统计所有行,COUNT(列名) 只统计该列非空的行。如果某列是NULL,COUNT(列名) 会忽略它。


三、GROUP BY:一键分组统计

上面的例子只能看一个班级。如果我想看每个班级的数学平均分,难道要一个一个写条件吗?

不用!GROUP BY 就是用来分组的。

SELECT class, AVG(score) 
FROM score 
WHERE subject = '数学'
GROUP BY class;

结果:

class AVG(score)
1班 87.5
2班 92

GROUP BY 就像设计软件里的智能分组,自动把相同班级的数据分成一组,然后对每组分别计算平均值。

注意: SELECT 后面只能放两种东西:

  • 被分组的列(如 class
  • 聚合函数(如 AVG(score)

如果写成 SELECT name, AVG(score) ... GROUP BY class,就会报错,因为 name 不在分组里,数据库不知道选哪个 name


四、HAVING:分组后的筛选

WHERE 是在分组筛选数据,HAVING 是在分组筛选分组结果。

比如:找出平均分大于90的班级

SELECT class, AVG(score) as avg_score
FROM score
WHERE subject = '数学'
GROUP BY class
HAVING avg_score > 90;
class avg_score
2班 92

WHERE vs HAVING 一句话记清楚:

  • WHERE 过滤(分组前)
  • HAVING 过滤(分组后)

五、结合JOIN:多表分组统计

我们之前学过JOIN,现在可以把两张表连起来再做统计。比如:查每个班级的平均分(班级名称在班级表,成绩在成绩表)。

SELECT c.class_name, AVG(sc.score) as avg_score
FROM students s
INNER JOIN scores sc ON s.id = sc.student_id
INNER JOIN classes c ON s.class_id = c.id
GROUP BY c.class_name;

先JOIN拼成大表,再GROUP BY分组,完美!


六、新手避坑指南(血泪总结)

image_1.png

我踩过的坑:想统计每个班级的平均分,结果忘了写 GROUP BY,返回了整个表的平均分,还纳闷了半天为什么结果只有一行……


七、今日学习心得

📝核心总结(三句话):

  • 聚合函数:对一组数据做统计(COUNT、SUM、AVG、MAX、MIN)
  • GROUP BY:按某个字段分组,每组分别统计
  • HAVING:对分组后的结果再筛选

把它们组合起来,就能回答各种“按xx统计”的问题。比如:

  • 每个月的销售额是多少?→ GROUP BY month
  • 哪些产品的销量超过1000?→ HAVING SUM(quantity) > 1000

这些技能在写报表、做数据分析时几乎天天用。


👋 我是数据库小学妹,一个从设计转行数据库的菜鸟。我们一起,把复杂的技术变得简单有趣!💪


本文为个人学习总结,所有命令均在MySQL 8.0环境下验证。建议先用小数据量测试,理解清楚再应用到实际场景。

相关文章
|
1月前
|
SQL NoSQL 关系型数据库
数据库分类一次讲清|转行学DB第2天
数据库小学妹(UI转行萌新)用通俗语言拆解数据库分类:从关系型(MySQL/Oracle)、NoSQL(Redis/MongoDB/Cassandra)、NewSQL(TiDB)到2026年爆火的向量数据库(Pinecone/Milvus),按数据模型、部署架构、业务负载三大维度梳理,配场景化案例与选学路径,助新手轻松入门。
|
1月前
|
SQL 数据库
多表关联查询入门:LEFT JOIN、INNER JOIN一文搞懂|转行学DB第6天
本文通俗易懂地讲解了数据库多表查询的三种JOIN操作:INNER JOIN(内连接)只返回两表匹配的数据,适用于查询交集数据;LEFT JOIN(左连接)保留左表所有记录并匹配右表数据,适用于查询主表完整信息;RIGHT JOIN(右连接)则保留右表所有记录。
|
17天前
|
存储 JSON 缓存
告别数据混乱!数据库设计三范式从入门到实践
数据库小学妹带你轻松入门三范式!用“建房打地基”比喻,讲清1NF(列不可分)、2NF(消除部分依赖)、3NF(消除传递依赖),直击数据冗余、更新异常等痛点。附实战拆表案例与反范式化提醒,助你设计出结构清晰、稳定高效的数据库!
|
19天前
|
SQL 人工智能 安全
AI圈开始“养马”了?聊聊龙虾退位、爱马仕登基
AI智能体“龙虾”(OpenClaw)的衰落与“爱马仕”(Hermes Agent)的崛起:前者因API限策与高危漏洞(CVSS 9.9)式微;后者以持久记忆、技能自生成、跨平台互通等实用能力破圈,成技术圈新“拐杖”。但技术无银弹,懂你的工具才是真助力。
|
1月前
|
SQL 关系型数据库 MySQL
WHERE、ORDER BY、LIMIT三大神器,让你的查询精准又高效!
本文介绍了SQL查询中的三大核心语句:WHERE(条件过滤)、ORDER BY(排序)和LIMIT(限制结果数)。通过电商订单查询、用户活跃度分析等实际案例,展示了如何组合使用这些语句实现精准查询。文章还分享了常见避坑技巧(如字符串引号使用、NULL值判断)和性能优化建议(如索引使用、分页查询优化)。
|
26天前
|
SQL 关系型数据库 MySQL
数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天
用生活化比喻(如字典目录)详解索引原理:它通过B+树结构加速查询,避免全表扫描;涵盖创建、查看、删除索引方法,联合索引的最左前缀原则,以及读写平衡等实战要点——让查询从“等几秒”变“秒出”!
数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天
|
18天前
|
SQL 关系型数据库 MySQL
SQL优化十大技巧,查询速度提升10倍!
数据库小学妹带你轻松提速SQL!10个实战优化技巧:精简SELECT、善用LIMIT、巧用EXPLAIN、合理建索引、避开函数索引失效、JOIN优于子查询、IN替代OR、批量操作、EXISTS优化大子查询、定期OPTIMIZE。附避坑指南,新手也能秒上手!
|
20天前
|
SQL 数据库 数据库管理
从运营到DBA,我用了这3个“偷懒”方法学SQL
用运营人思维教小白轻松学SQL:①把SQL当Excel对话,理解SELECT/FROM/WHERE;②建“报错翻译本”,快速定位解决错误;③用“填空题法”抄改练,复用模板上手。不求完美,先跑通、看懂、不崩溃!
从运营到DBA,我用了这3个“偷懒”方法学SQL
|
21天前
|
SQL NoSQL BI
运营转DBA:我终于知道数据库不是Excel了
小耶分享数据库入门干货:零基础也能懂!对比Excel,解析数据库高效查数、并发处理、数据安全等核心优势;手把手教SELECT/WHERE/JOIN三招入门;避坑提醒——DELETE前先SELECT。转行不难,SQL即问数据的语言!
运营转DBA:我终于知道数据库不是Excel了
|
20天前
|
SQL 关系型数据库 MySQL
5款好用的免费MySQL客户端,新手必备!
告别枯燥命令行!数据库小学妹精选5款免费MySQL图形化工具:Workbench(官方全能)、phpMyAdmin(免安装Web版)、DBeaver(多库支持)、HeidiSQL(Windows轻量之选)、TablePlus(高颜值跨平台)。小白友好,语法高亮、自动补全、可视化结构一应俱全,助你高效学SQL!