数据库聚合函数详解:类型、用法与实战案例

2025年12月28日/ 浏览 54

在数据库操作中,聚合函数是处理数据的利器。它们能够对一组值执行计算,并返回单个统计结果。无论是数据报表生成、业务分析还是日常查询,聚合函数都扮演着至关重要的角色。本文将系统介绍聚合函数的类型、语法及实际应用场景,并通过实例演示如何灵活运用。

一、什么是聚合函数?

聚合函数(Aggregate Function)是SQL中用于对多行数据进行汇总计算的函数。它们通常与GROUP BY子句配合使用,实现分组统计。常见的聚合函数包括:
COUNT:统计行数
SUM:计算数值列的总和
AVG:计算平均值
MAX/MIN:获取最大值/最小值

二、常用聚合函数详解

1. COUNT:计数函数

用于统计符合条件的记录数。
基本语法
sql
SELECT COUNT(column_name) FROM table_name WHERE condition;

实例:统计员工表中工资超过5000的人数

SELECT COUNT(*) FROM employees WHERE salary > 5000;
2. SUM:求和函数

计算指定列的总和,仅适用于数值类型。
实例:计算某商品的销售总额

SELECT SUM(amount) FROM sales WHERE product_id = 101;
3. AVG:平均值函数

返回某列的平均值,自动忽略NULL值。
实例:计算部门平均工资

SELECT AVG(salary) FROM employees GROUP BY department_id;
4. MAX/MIN:极值函数

获取某列的最大值或最小值。
实例:查找最高和最低温度记录

SELECT MAX(temperature), MIN(temperature) FROM weather_data;

三、GROUP BY分组聚合

聚合函数常与GROUP BY结合,实现分组统计。例如:
按部门统计员工数量和平均工资

SELECT department_id, COUNT(*) AS employee_count, AVG(salary) AS avg_salary  
  FROM employees  
  GROUP BY department_id;

四、HAVING子句的过滤作用

HAVING用于对聚合结果进行筛选(类似于WHERE,但针对分组后的数据)。
实例:筛选平均工资超过8000的部门

SELECT department_id, AVG(salary)  
  FROM employees  
  GROUP BY department_id  
  HAVING AVG(salary) > 8000;

五、实战案例:电商订单分析

假设有一个订单表orders,包含字段:order_iduser_idamountorder_date
1. 统计每日订单总额

SELECT order_date, SUM(amount) AS daily_revenue  
   FROM orders  
   GROUP BY order_date;
  1. 找出消费金额最高的用户
SELECT user_id, SUM(amount) AS total_spent  
   FROM orders  
   GROUP BY user_id  
   ORDER BY total_spent DESC  
   LIMIT 1;

六、注意事项

  1. NULL值处理:除COUNT(*)外,其他聚合函数默认忽略NULL值。
  2. 性能优化:在大表上使用聚合时,建议对分组字段建立索引。
picture loss