SQL AVG() 函数
学习 SQL 函数是掌握 SQL 关键部分之一。 AVG() 函数是聚合函数之一,用于计算某个字段的平均值。接下来让我们一步一步地深入理解这个函数,并通过实际例子来说明它的用法。
1. AVG() 函数简介
AVG() 函数返回选定列的平均值,通常用于数字类型字段。它会自动忽略 NULL 值。
2. 基本语法
SELECT AVG(column_name)
FROM table_name
WHERE condition;
column_name:你想要计算平均值的列。table_name:数据表的名字。condition:可选,用于过滤数据的条件。
3. 示例 1:计算工资的平均值
假设你有一个员工表 employees,包含以下字段:
| employee_id | name | salary |
|---|---|---|
| 1 | Tom | 5000 |
| 2 | Jane | 6000 |
| 3 | Bob | 7000 |
| 4 | Alice | 8000 |
| 5 | Mike | 5500 |
你可以使用 AVG() 来计算所有员工的平均工资:
SELECT AVG(salary) AS avg_salary
FROM employees;
输出:
| avg_salary |
|---|
| 6300 |
4. 示例 2:计算特定部门的平均工资
假设表中还有一个 department 字段,记录员工所属的部门。你想计算某个部门的平均工资。例如,计算 “Sales” 部门员工的平均工资:
SELECT AVG(salary) AS avg_salary
FROM employees
WHERE department = 'Sales';
5. 示例 3:使用 AVG() 结合 GROUP BY
有时,你可能需要按某个分类进行分组并计算每个组的平均值。比如,计算每个部门的平均工资:
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
输出:
| department | avg_salary |
|---|---|
| Sales | 6000 |
| HR | 7000 |
| IT | 7500 |
6. 示例 4:排除 NULL 值
AVG() 函数会自动忽略 NULL 值。如果某些员工的工资字段是 NULL,它们不会影响结果。假设员工表中有些 salary 为 NULL:
SELECT AVG(salary) AS avg_salary
FROM employees
WHERE salary IS NOT NULL;
这将计算所有非 NULL 工资的平均值。
7. 进阶用法
你还可以将 AVG() 函数与其他函数结合使用,例如使用 CASE 来进行条件判断:
SELECT
department,
AVG(CASE WHEN salary > 6000 THEN salary END) AS avg_high_salary
FROM employees
GROUP BY department;
这个例子计算了每个部门工资大于 6000 的员工的平均工资。
这些示例展示了 AVG() 函数的基本和进阶用法,可以应用于多种实际场景。