在 MySQL 中,可以通过使用条件聚合(Conditional Aggregation)来将统计查询条件写在统计项中。这通常是通过 CASE WHEN 语句结合聚合函数(如 COUNT、SUM 等)来实现的。以下是一些常见的例子,帮助你理解如何在统计项中使用条件。
示例表结构
假设我们有一个 sales 表,包含以下字段:
id(销售记录ID)
product_name(产品名称)
quantity(销量)
sales_date(销售日期)
示例数据
sql
CREATE TABLE sales (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100),
quantity INT,
sales_date DATE
);
INSERT INTO sales (product_name, quantity, sales_date) VALUES
('Product A', 10, '2025-01-01'),
('Product B', 5, '2025-01-02'),
('Product A', 15, '2025-01-03'),
('Product B', 20, '2025-01-04'),
('Product C', 25, '2025-01-05');
示例查询:统计每种产品的总销量和销量大于10的销量
我们想要统计每种产品的总销量,并计算销量大于10的数量。可以通过如下查询实现:
sql
SELECT
product_name,
SUM(quantity) AS total_quantity,
SUM(CASE WHEN quantity > 10 THEN quantity ELSE 0 END) AS quantity_above_10
FROM
sales
GROUP BY
product_name;
查询结果
这个查询的结果将会是:
+-------------+----------------+---------------------+
| product_name| total_quantity | quantity_above_10 |
+-------------+----------------+---------------------+
| Product A | 25 | 15 |
| Product B | 25 | 20 |
| Product C | 25 | 0 |
+-------------+----------------+---------------------+
解释
SUM(quantity) AS total_quantity 计算每种产品的总销量。
SUM(CASE WHEN quantity > 10 THEN quantity ELSE 0 END) AS quantity_above_10 使用条件聚合,统计销量大于10的总销量。
更复杂的示例:统计不同时间段的销量
假设我们需要统计不同时间段内的销量,例如,销量在1月1日至1月3日和1月4日至1月5日的销量。可以这样写:
sql
SELECT
product_name,
SUM(quantity) AS total_quantity,
SUM(CASE WHEN sales_date BETWEEN '2025-01-01' AND '2025-01-03' THEN quantity ELSE 0 END) AS quantity_first_period,
SUM(CASE WHEN sales_date BETWEEN '2025-01-04' AND '2025-01-05' THEN quantity ELSE 0 END) AS quantity_second_period
FROM
sales
GROUP BY
product_name;
查询结果
+-------------+----------------+----------------------+-----------------------+
| product_name| total_quantity | quantity_first_period| quantity_second_period |
+-------------+----------------+----------------------+-----------------------+
| Product A | 25 | 10 | 15 |
| Product B | 25 | 5 | 20 |
| Product C | 25 | 0 | 25 |
+-------------+----------------+----------------------+-----------------------+
总结
通过使用条件聚合,你可以灵活地在统计项中添加查询条件。这种方法非常适用于多维度的数据分析,能有效地从数据库中提取有价值的信息。如果你有任何其他问题或需求,请随时告诉我!