跳到主要内容

SQL AVG 函数

在 SQL 中,聚合函数用于对一组值执行计算并返回单个值。AVG 函数是 SQL 中最常用的聚合函数之一,用于计算数值列的平均值。本文将详细介绍 AVG 函数的用法,并通过示例帮助你理解其实际应用。

什么是 AVG 函数?

AVG 函数用于计算数值列的平均值。它会对指定列中的所有非空值进行求和,然后除以这些值的数量,返回一个浮点数结果。如果列中包含 NULL 值,AVG 函数会自动忽略这些值。

语法

sql
AVG(column_name)
  • column_name:需要计算平均值的数值列。

基本用法

假设我们有一个名为 sales 的表,其中包含以下数据:

idproductprice
1A100
2B200
3C300
4DNULL

我们想要计算 price 列的平均值,可以使用以下 SQL 查询:

sql
SELECT AVG(price) AS average_price
FROM sales;

输出

average_price
200.0
备注

注意:AVG 函数会忽略 NULL 值,因此在上面的示例中,price 列中的 NULL 值不会被计入计算。

实际案例

案例 1:计算学生平均成绩

假设我们有一个 students 表,记录了学生的成绩:

student_idnamescore
1Alice85
2Bob90
3Carol78
4DaveNULL

我们想要计算所有学生的平均成绩:

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_idproductamount
1A100
2B200
3A150
4B250
5C300

我们想要计算每个产品的平均订单金额:

sql
SELECT product, AVG(amount) AS average_amount
FROM orders
GROUP BY product;

输出

productaverage_amount
A125.0
B225.0
C300.0
警告

注意:在使用 GROUP BY 时,AVG 函数会分别计算每个组的平均值。

总结

AVG 函数是 SQL 中用于计算数值列平均值的强大工具。通过本文的学习,你应该已经掌握了如何使用 AVG 函数来计算单个列的平均值,以及如何在分组数据中使用它。记住,AVG 函数会自动忽略 NULL 值,但你可以通过 COALESCE 函数来处理 NULL 值。

附加资源与练习

  • 练习 1:创建一个包含学生姓名和成绩的表,计算所有学生的平均成绩。
  • 练习 2:创建一个包含订单信息的表,计算每个产品的平均订单金额。
  • 练习 3:尝试在计算平均值时使用 COALESCE 函数处理 NULL 值,并观察结果的变化。

通过不断练习,你将更加熟练地掌握 AVG 函数的使用。祝你学习愉快!