🧮 第5篇:《COUNT 是点人数,AVG 是算均价,SQL 聚合函数教你变身数据分析师!》
关键词:COUNT、AVG、SUM、MAX、MIN、GROUP BY、HAVING
🎬 开场:会统计,才有话语权
你在合租群里喊:
“现在租房好难,天河区都 3000+ 起了吧?”
这时候要是真有人回你一句:
“天河区平均租金 2784 元,共有 38 套房。”
你会不会觉得他就是“有数据说话”的人?
今天我们就来学会这个能力:用 SQL 聚合函数搞统计分析!
1️⃣ SQL 五大聚合函数(记住它们!)
| 函数 | 含义 | 用法示例 |
|---|---|---|
| COUNT() | 计数(有多少行) | COUNT(*):总数 |
| AVG() | 平均值 | AVG(price):平均租金 |
| SUM() | 总和 | SUM(area):总面积 |
| MAX() | 最大值 | MAX(price):最贵 |
| MIN() | 最小值 | MIN(price):最便宜 |
2️⃣ 单表统计:开局先练拳
假设我们有如下房源表 houses:
| id | title | district | price | area | type |
|---|---|---|---|---|---|
| 1 | 精装修一居室 | 天河 | 1800 | 32 | 一居 |
| 2 | 押一付一两房 | 海珠 | 2500 | 48 | 两居 |
| 3 | 电梯大三房 | 天河 | 3600 | 80 | 三居 |
| 4 | 地铁口一房 | 天河 | 2000 | 28 | 一居 |
| 5 | 简装小户型 | 越秀 | 1500 | 26 | 一居 |
✅ 看看总共有多少套房
SELECT COUNT(*) FROM houses;
-- 结果:5
✅ 所有房源的平均租金
SELECT AVG(price) FROM houses;
-- 结果:2280
✅ 天河区的最大面积房
SELECT MAX(area) FROM houses
WHERE district = '天河';
3️⃣ GROUP BY:分组统计,真正有用了!
✅ 每个区域有多少套房子?
SELECT district, COUNT(*) AS 房源数
FROM houses
GROUP BY district;
结果示例:
| district | 房源数 |
|---|---|
| 天河 | 3 |
| 海珠 | 1 |
| 越秀 | 1 |
✅ 每个区域的平均租金是多少?
SELECT district, AVG(price) AS 平均租金
FROM houses
GROUP BY district;
✅ 每种户型的最贵房子价格?
SELECT type, MAX(price) AS 最贵房
FROM houses
GROUP BY type;
4️⃣ HAVING:对分组结果进行过滤
WHERE 是对“原始数据”过滤,
HAVING 是对“分组统计结果”过滤。
✅ 看哪些区域平均租金高于 2000 元:
SELECT district, AVG(price) AS avg_price
FROM houses
GROUP BY district
HAVING AVG(price) > 2000;
🧠 聚合函数 & 分组口诀
COUNT 点人数,AVG 算均价,
SUM 是加法王,MAX、MIN 最值霸。GROUP BY 来分组,HAVING 来筛它,
WHERE 在分组前,HAVING 分组下。
🛠 小练习
-
每个户型的平均面积是多少?
SELECT type, AVG(area) FROM houses GROUP BY type; -
统计不同区域的房源总租金
SELECT district, SUM(price) FROM houses GROUP BY district; -
看看哪种户型房子数量超过 1 套
SELECT type, COUNT(*) FROM houses GROUP BY type HAVING COUNT(*) > 1;