为了从表中提取有用的信息,常常需要对数据进行汇总和分析。聚合查询是一种常用的查询方式,能够从大量数据中提取出有意义的统计信息。
GROUP BY 子句用于将查询结果按照一个或多个列进行分组,并且通常与聚合函数(如 COUNT、SUM、AVG、MAX、MIN 等)一起使用,以计算每个组的汇总值。
HAVING 子句用于对分组后的结果进行过滤,通常在 GROUP BY 之后使用。它允许我们对聚合结果进行条件筛选,帮助我们提取出符合特定条件的分组数据。
在实际应用中,GROUP BY 和 HAVING 的组合非常重要。例如,在销售分析中,我们可能需要计算每个产品的总销售额,并找出销售额超过某个阈值的产品。通过使用 GROUP BY 和 HAVING,我们可以方便地实现这些需求。
1. 创建示例表
我们将创建两个表:products
和 sales
,用于存储产品信息和销售记录。
-- 创建 products 表
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
-- 创建 sales 表
CREATE TABLE sales (
sale_id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT,
quantity INT,
sale_date DATE,
FOREIGN KEY (product_id) REFERENCES products(product_id)
);