SQL聚合函数
外观
SQL聚合函数[编辑 | 编辑源代码]
SQL聚合函数(Aggregate Functions)是SQL中用于对一组值执行计算并返回单个值的函数。它们通常与GROUP BY
子句一起使用,用于对数据进行分组统计。聚合函数是数据分析、报表生成和数据汇总的核心工具之一。
常见的SQL聚合函数[编辑 | 编辑源代码]
以下是SQL中最常用的聚合函数:
- COUNT():计算行数或非NULL值的数量。
- SUM():计算数值列的总和。
- AVG():计算数值列的平均值。
- MAX():返回列中的最大值。
- MIN():返回列中的最小值。
- GROUP_CONCAT()(MySQL)或STRING_AGG()(SQL Server/PostgreSQL):将多个行的值连接成一个字符串。
基本语法[编辑 | 编辑源代码]
聚合函数的基本语法如下:
SELECT 聚合函数(列名)
FROM 表名
[WHERE 条件]
[GROUP BY 分组列];
详细示例[编辑 | 编辑源代码]
示例1:COUNT函数[编辑 | 编辑源代码]
计算employees表中的员工数量:
SELECT COUNT(*) AS total_employees
FROM employees;
输出:
total_employees |
---|
50 |
示例2:SUM和AVG函数[编辑 | 编辑源代码]
计算销售表中所有订单的总金额和平均金额:
SELECT
SUM(amount) AS total_sales,
AVG(amount) AS average_sale
FROM orders;
输出:
total_sales | average_sale |
---|---|
125000.00 | 2500.00 |
示例3:GROUP BY使用[编辑 | 编辑源代码]
按部门分组计算平均工资:
SELECT
department,
AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
输出:
department | avg_salary |
---|---|
IT | 75000.00 |
HR | 60000.00 |
Sales | 65000.00 |
高级用法[编辑 | 编辑源代码]
HAVING子句[编辑 | 编辑源代码]
HAVING
子句用于过滤聚合结果,类似于WHERE
但用于聚合函数:
SELECT
department,
AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 70000;
多列分组[编辑 | 编辑源代码]
可以按多列分组:
SELECT
department,
job_title,
COUNT(*) AS employee_count
FROM employees
GROUP BY department, job_title;
聚合函数嵌套[编辑 | 编辑源代码]
某些数据库支持聚合函数嵌套:
SELECT MAX(AVG(salary))
FROM employees
GROUP BY department;
实际应用案例[编辑 | 编辑源代码]
场景:电商网站需要生成销售报告,分析各产品类别的销售情况。
SELECT
p.category,
COUNT(o.order_id) AS order_count,
SUM(o.quantity) AS total_quantity,
SUM(o.quantity * p.price) AS total_revenue,
AVG(o.quantity * p.price) AS avg_order_value
FROM orders o
JOIN products p ON o.product_id = p.product_id
WHERE o.order_date BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY p.category
ORDER BY total_revenue DESC;
性能考虑[编辑 | 编辑源代码]
- 在大型表上使用聚合函数可能会很耗资源
- 为聚合列创建索引可以提高性能
- 考虑使用
EXPLAIN
分析查询执行计划
数学基础[编辑 | 编辑源代码]
聚合函数背后的数学概念:
- COUNT:基数计算,
- SUM:累加,
- AVG:算术平均数,
- MAX/MIN:极值,或
可视化示例[编辑 | 编辑源代码]
注意事项[编辑 | 编辑源代码]
- 聚合函数会忽略NULL值(COUNT(*)除外)
- 在GROUP BY查询中,SELECT列表只能包含聚合函数或GROUP BY列
- 不同数据库可能对聚合函数有不同实现和限制
总结[编辑 | 编辑源代码]
SQL聚合函数是数据分析的强大工具,掌握它们对于任何与数据库交互的开发人员或分析师都至关重要。从简单的计数到复杂的统计分析,聚合函数提供了从数据中提取有意义信息的途径。