第三十回:分门别类

—— GROUP BY & HAVING
👈 上一回:算无遗策 🏠 回到大竹峰 下一回:存在之道 👉

刚才我们算出了“全门派”的平均修为。但如果我想分别知道“大竹峰”、“龙首峰”、“小竹峰”各自的平均修为呢?

那我是不是要写三次 SELECT 语句?

非也!用 GROUP BY 一次搞定。

📂 归类之术:GROUP BY

📜 结阵心法

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT Sect, AVG(Level) FROM Disciples GROUP BY Sect;

结果:
大竹峰: 50
龙首峰: 75
小竹峰: 80

🛡️ 筛选阵法:HAVING

那我只想看平均修为超过 60 的山头呢?用 WHERE AVG(Level) > 60

错!WHERE 无法与聚合函数一起使用。这时候必须请出 HAVING

🧘‍♂️ 试炼:精英山头

SELECT Sect, AVG(Level) FROM Disciples GROUP BY Sect HAVING AVG(Level) > 60;