SQL HAVING 子句详解:在 GROUP BY 中更灵活的条件筛选


HAVING子句在SQL中用于在GROUP BY子句之后对分组进行条件筛选。它允许在聚合函数(如COUNT、SUM、AVG等)的结果上应用条件,以过滤分组结果。

下面是HAVING子句的一些关键点:

  1. 语法

    SELECT column1, aggregate_function(column2)
    FROM table_name
    GROUP BY column1
    HAVING condition;
    
  2. 用途:HAVING子句通常用于在进行分组后对分组结果进行筛选。它允许使用聚合函数的结果来过滤分组。

  3. 示例:假设有一个名为"orders"的表,其中包含订单信息,包括订单总额和订单状态。我们想要找到订单总额超过1000的订单,并且只显示那些已发货的订单。

    SELECT customer_id, SUM(order_total) AS total_amount
    FROM orders
    WHERE order_status = 'shipped'
    GROUP BY customer_id
    HAVING SUM(order_total) > 1000;
    

    在上面的示例中,首先根据"customer_id"对订单进行分组,然后使用HAVING子句过滤出订单总额超过1000的分组,最后只显示已发货的订单。

  4. 注意事项

    • HAVING子句仅在GROUP BY子句存在时才能使用。
    • 它与WHERE子句的作用类似,但用于过滤分组结果而不是行。
    • HAVING子句中可以使用聚合函数,例如SUM、COUNT、AVG等。

通过使用HAVING子句,你可以在GROUP BY子句之后更灵活地筛选分组结果,从而更精确地获取你需要的数据。


原文链接:codingdict.net