第5篇:《COUNT 是点人数,AVG 是算均价,SQL 聚合函数教你变身数据分析师!》

77 阅读2分钟

🧮 第5篇:《COUNT 是点人数,AVG 是算均价,SQL 聚合函数教你变身数据分析师!》

关键词COUNTAVGSUMMAXMINGROUP BYHAVING

🎬 开场:会统计,才有话语权

你在合租群里喊:
“现在租房好难,天河区都 3000+ 起了吧?”

这时候要是真有人回你一句:
“天河区平均租金 2784 元,共有 38 套房。”
你会不会觉得他就是“有数据说话”的人?

今天我们就来学会这个能力:用 SQL 聚合函数搞统计分析!


1️⃣ SQL 五大聚合函数(记住它们!)

函数含义用法示例
COUNT()计数(有多少行)COUNT(*):总数
AVG()平均值AVG(price):平均租金
SUM()总和SUM(area):总面积
MAX()最大值MAX(price):最贵
MIN()最小值MIN(price):最便宜

2️⃣ 单表统计:开局先练拳

假设我们有如下房源表 houses

idtitledistrictpriceareatype
1精装修一居室天河180032一居
2押一付一两房海珠250048两居
3电梯大三房天河360080三居
4地铁口一房天河200028一居
5简装小户型越秀150026一居

✅ 看看总共有多少套房

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 分组下。


🛠 小练习

  1. 每个户型的平均面积是多少?

    SELECT type, AVG(area) FROM houses
    GROUP BY type;
    
  2. 统计不同区域的房源总租金

    SELECT district, SUM(price) FROM houses
    GROUP BY district;
    
  3. 看看哪种户型房子数量超过 1 套

    SELECT type, COUNT(*) FROM houses
    GROUP BY type
    HAVING COUNT(*) > 1;