6.1.2 HAVING 子句 要完成 GROUP BY 子句,使用 HAVING 子句来在构成组之后将一个或多个限制条件应 用于这些组。HAVING 子句对组的影响类似于 WHERE 子句限定个别行的方式,使用 HAVING 子句的一个优点是可以在搜索条件中包括聚集,而在 WHERE 子句的搜索条件 中去不能包含聚集。 每个 HAVING 条件将组的一列或一个聚集表达式与组的另一个聚集表达式或与常量作比 较。可以使用 HAVING 来对列值或组列表中的聚集值设置条件。 下列查询返回具有两个商品以上的订单上每个商品的平均总价格。HAVING 子句在每个组 构成时测试每个组,并选择由两行以上构成的那些组。 图: 查询 SELECT order_num, COUNT(*) number, AVG (total_price) average ?FROM items? ?GROUP BY order_num ?HAVING COUNT(*) > 2; 图: 查询结果 ?order_num number average ? ?1003 3 $319.67 ?1004 4 $354.00 ?1005 4 $140.50 ?1006 5 $89.60 ?1007 5 $339.20 ?1013 4 $35.95 ?1016 4 $163.50 ?1017 3 $194.67 ?1018 5 $226.20 ?1021 4 $403.50 ?1022 3 $77.33 ?1023 6 $137.33 如果使用不带 GROUP BY 子句的 HAVING 子句,那么 HAVING 条件应用于满足搜索 条件的所有行。也就是说,满足搜索条件的所有行组成了一个组。
|