MySQL HAVING

作者admin

3月 16, 2024

HAVING 子句用于在 SQL 查询中对分组后的结果进行筛选。它通常与 GROUP BY 一起使用,允许在分组后对结果进行过滤。

基本语法如下:

SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2
HAVING condition;

GROUP BY 和聚合函数

  • GROUP BY 用于将结果集按照指定列进行分组。
  • 聚合函数(例如 COUNTSUMAVG 等)通常与 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。

作者 admin

百度广告效果展示