HAVING
子句用于在 SQL 查询中对分组后的结果进行筛选。它通常与 GROUP BY
一起使用,允许在分组后对结果进行过滤。
基本语法如下:
SELECT
column1, column2, aggregate_function(column3)
FROM
table_name
GROUP
BY column1, column2
HAVING
condition;
GROUP BY 和聚合函数:
GROUP BY
用于将结果集按照指定列进行分组。- 聚合函数(例如
COUNT
、SUM
、AVG
等)通常与SELECT
语句一起使用,对每个分组的数据执行计算。
HAVING 子句:
HAVING
子句允许在GROUP BY
分组后对结果集进行筛选。- 它类似于
WHERE
子句,但WHERE
用于对行进行筛选,而HAVING
用于对分组后的结果进行筛选。 - 可以使用聚合函数和列名来定义条件,条件通常涉及对分组后的聚合结果进行比较。
假设有一张表 orders
包含客户ID (customer_id
) 和订单总金额 (total_amount
),我们想找到订单总金额超过1000的客户,并且这些客户有至少两个订单。
SELECT
customer_id, COUNT
(*) as order_count, SUM
(total_amount) as total_spent
FROM
orders
GROUP
BY customer_id
HAVING
COUNT(*) >= 2 AND SUM
(total_amount) > 1000;
这个查询首先按客户ID分组订单记录,然后使用 HAVING
子句筛选出满足以下条件的客户:
COUNT(*) >= 2
:客户有至少两个订单。SUM(total_amount) > 1000
:客户的订单总金额超过1000。