SQL AVG 函数
在 SQL 中,聚合函数用于对一组值执行计算并返回单个值。AVG
函数是 SQL 中最常用的聚合函数之一,用于计算数值列的平均值。本文将详细介绍 AVG
函数的用法,并通过示例帮助你理解其实际应用。
什么是 AVG 函数?
AVG
函数用于计算数值列的平均值。它会对指定列中的所有非空值进行求和,然后除以这些值的数量,返回一个浮点数结果。如果列中包含 NULL
值,AVG
函数会自动忽略这些值。
语法
sql
AVG(column_name)
column_name
:需要计算平均值的数值列。
基本用法
假设我们有一个名为 sales
的表,其中包含以下数据:
id | product | price |
---|---|---|
1 | A | 100 |
2 | B | 200 |
3 | C | 300 |
4 | D | NULL |
我们想要计算 price
列的平均值,可以使用以下 SQL 查询:
sql
SELECT AVG(price) AS average_price
FROM sales;
输出
average_price |
---|
200.0 |
备注
注意:AVG
函数会忽略 NULL
值,因此在上面的示例中,price
列中的 NULL
值不会被计入计算。
实际案例
案例 1:计算学生平均成绩
假设我们有一个 students
表,记录了学生的成绩:
student_id | name | score |
---|---|---|
1 | Alice | 85 |
2 | Bob | 90 |
3 | Carol | 78 |
4 | Dave | NULL |
我们想要计算所有学生的平均成绩:
sql
SELECT AVG(score) AS average_score
FROM students;
输出
average_score |
---|
84.3333 |
提示
提示:如果你希望将 NULL
值视为 0 进行计算,可以使用 COALESCE
函数将 NULL
替换为 0:
sql
SELECT AVG(COALESCE(score, 0)) AS average_score
FROM students;
输出将是 63.25
,因为 NULL
被替换为 0 并参与了计算。
案例 2:分组计算平均值
假设我们有一个 orders
表,记录了不同产品的订单金额:
order_id | product | amount |
---|---|---|
1 | A | 100 |
2 | B | 200 |
3 | A | 150 |
4 | B | 250 |
5 | C | 300 |
我们想要计算每个产品的平均订单金额:
sql
SELECT product, AVG(amount) AS average_amount
FROM orders
GROUP BY product;
输出
product | average_amount |
---|---|
A | 125.0 |
B | 225.0 |
C | 300.0 |
警告
注意:在使用 GROUP BY
时,AVG
函数会分别计算每个组的平均值。
总结
AVG
函数是 SQL 中用于计算数值列平均值的强大工具。通过本文的学习,你应该已经掌握了如何使用 AVG
函数来计算单个列的平均值,以及如何在分组数据中使用它。记住,AVG
函数会自动忽略 NULL
值,但你可以通过 COALESCE
函数来处理 NULL
值。
附加资源与练习
- 练习 1:创建一个包含学生姓名和成绩的表,计算所有学生的平均成绩。
- 练习 2:创建一个包含订单信息的表,计算每个产品的平均订单金额。
- 练习 3:尝试在计算平均值时使用
COALESCE
函数处理NULL
值,并观察结果的变化。
通过不断练习,你将更加熟练地掌握 AVG
函数的使用。祝你学习愉快!