使用 HAVING 子句来将一个或多个限定的条件应用到组或应用到整个结果集。
在下列示例中,每一条件将该组的一个计算的属性与该组的另一计算的属性或常量进行比较。第一个 SELECT 语句使用 HAVING 子句,将计算的表达式 COUNT(*) 与常量 2 进行比较。该查询返回有两个以上项的所有订单上每项的平均合计价格。
SELECT order_num, AVG(total_price) FROM items GROUP BY order_num HAVING COUNT(*) > 2; SELECT customer_num, EXTEND (call_dtime, MONTH TO MONTH) FROM cust_calls GROUP BY 1, 2 HAVING COUNT(*) > 1;
SELECT customer_num, EXTEND (call_dtime), call_code FROM cust_calls GROUP BY call_code, 2, 1 HAVING customer_num < 120;
SELECT AVG(total_price) FROM items HAVING COUNT(*) > 10;
由于在 WHERE 子句中的条件不可包括聚集表达式,所以您可使用 HAVING 子句来将带有聚集的条件应用于查询的整个结果集,如上例所示。
SELECT order_num, COUNT(*) number, AVG (total_price) average FROM items GROUP BY order_num HAVING COUNT(DISTINCT *) > 2;
然而,如果从上述示例省略 DISTINCT 关键字,则不发出错误。