跳转到内容

SQL聚合函数

来自代码酷
Admin留言 | 贡献2025年5月12日 (一) 00:20的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

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:基数计算,|X|
  • SUM:累加,i=1nxi
  • AVG:算术平均数,1ni=1nxi
  • MAX/MIN:极值,max(X)min(X)

可视化示例[编辑 | 编辑源代码]

pie title 销售分布 "电子产品" : 45 "服装" : 30 "家居" : 25

注意事项[编辑 | 编辑源代码]

  • 聚合函数会忽略NULL值(COUNT(*)除外)
  • 在GROUP BY查询中,SELECT列表只能包含聚合函数或GROUP BY列
  • 不同数据库可能对聚合函数有不同实现和限制

总结[编辑 | 编辑源代码]

SQL聚合函数是数据分析的强大工具,掌握它们对于任何与数据库交互的开发人员或分析师都至关重要。从简单的计数到复杂的统计分析,聚合函数提供了从数据中提取有意义信息的途径。