刚才我们算出了“全门派”的平均修为。但如果我想分别知道“大竹峰”、“龙首峰”、“小竹峰”各自的平均修为呢?
那我是不是要写三次 SELECT 语句?
非也!用 GROUP BY 一次搞定。
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
SELECT Sect, AVG(Level)
FROM Disciples
GROUP BY Sect;
结果:
大竹峰: 50
龙首峰: 75
小竹峰: 80
那我只想看平均修为超过 60 的山头呢?用 WHERE AVG(Level) > 60?
错!WHERE 无法与聚合函数一起使用。这时候必须请出 HAVING。
SELECT Sect, AVG(Level)
FROM Disciples
GROUP BY Sect
HAVING AVG(Level) > 60;