mysql聚合函数
时间: 2025-05-04 12:53:27 浏览: 38
### MySQL 中的聚合函数及其用法
#### 什么是聚合函数?
聚合函数是一种用于计算一组数据并返回单一值的功能强大的工具。常见的聚合函数包括 `COUNT()`、`SUM()`、`AVG()`、`MAX()` 和 `MIN()` 等[^2]。
---
#### 基本语法
聚合函数通常与 `SELECT` 查询一起使用,其基本结构如下:
```sql
SELECT AGGREGATE_FUNCTION(column_name) FROM table_name;
```
其中,`AGGREGATE_FUNCTION` 是具体的聚合函数名称,而 `column_name` 则是要操作的数据列。
---
#### 各种聚合函数详解及示例
##### 1. COUNT()
`COUNT(*)` 返回表中所有记录的数量;如果指定某一列,则只统计该列不为空 (`NULL`) 的记录数量。
```sql
-- 统计 employees 表中的总人数
SELECT COUNT(*) AS total_employees FROM employees;
-- 只统计 salary 不为 NULL 的员工数
SELECT COUNT(salary) AS non_null_salaries FROM employees;
```
##### 2. SUM()
`SUM()` 计算某列数值型字段的总计值。
```sql
-- 计算所有员工工资总额
SELECT SUM(salary) AS total_salary FROM employees;
```
##### 3. AVG()
`AVG()` 计算某列数值型字段的平均值。
```sql
-- 获取所有员工的平均薪资
SELECT AVG(salary) AS average_salary FROM employees;
```
##### 4. MAX() 和 MIN()
分别获取某列的最大值和最小值。
```sql
-- 查找最高薪资
SELECT MAX(salary) AS max_salary FROM employees;
-- 查找最低薪资
SELECT MIN(salary) AS min_salary FROM employees;
```
---
#### 结合 GROUP BY 使用
当需要按某些条件分组统计数据时,可以配合 `GROUP BY` 子句使用。
```sql
-- 按部门统计每个部门的人数
SELECT department_id, COUNT(*) AS dept_count
FROM employees
GROUP BY department_id;
-- 按部门统计每个部门的平均薪资
SELECT department_id, AVG(salary) AS avg_dept_salary
FROM employees
GROUP BY department_id;
```
注意:在 `HAVING` 子句中也可以进一步过滤分组后的结果集。
```sql
-- 找出平均薪资大于 5000 的部门
SELECT department_id, AVG(salary) AS avg_dept_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000;
```
---
#### 性能优化建议
为了提升涉及大量数据的操作效率,在适当情况下可以通过创建索引来加速查询过程[^4]。
```sql
CREATE INDEX idx_department ON employees(department_id);
```
这样能够显著减少 I/O 开销,尤其是在大数据量场景下。
---
阅读全文
相关推荐


















