HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
group by用法
SELECT dept,COUNT(user_name) FROM score_table WHERE score>80 GROUP BY dept;
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
group by 字段 having 条件判断;
SELECT class, AVG(score) as avgscore
FROM student
GROUP BY class
HAVING AVG(score)>=80;
请注意,如果 HAVING 中包含多个条件,那么这些条件将通过 AND、OR 或 NOT 组合在一起。
SELECT ProductID, AVG(OrderQty) AS AverageQuantity, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > $1000000.00
AND AVG(OrderQty) < 3 ;
理解应用 WHERE、GROUP BY 和 HAVING 子句的正确顺序对编写高效的查询代码会有所帮助:
WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
GROUP BY 子句用来分组 WHERE 子句的输出。
HAVING 子句用来从分组的结果中筛选行。
注意,ORDER BY 子句可用于排序 GROUP BY 子句的输出。