SQL 平均值(AVG)
在 SQL 中,可以使用 AVG
函数来计算数值列的平均值。AVG
函数返回数值列中所有数值的平均值。
1. AVG 函数的基本用法
AVG 函数的基本语法如下:
SELECT AVG(column_name)
FROM table_name;
其中,column_name
是要计算平均值的列名,table_name
是要从中取值的表名。使用 AVG
函数可以计算该列的平均值。
示例:
假设我们有一个表 students
,记录了学生的考试成绩,包含两列:name
和 score
。
CREATE TABLE students (
name VARCHAR(100),
score INT
);
INSERT INTO students (name, score) VALUES
('Alice', 80),
('Bob', 90),
('Charlie', 85),
('David', 95),
('Eve', 75);
现在我们想计算学生的平均成绩,可以使用 AVG
函数:
SELECT AVG(score)
FROM students;
运行结果为:
AVG(score) |
---|
85.0 |
这表示学生的平均成绩为 85.0 分。
2. AVG 函数的使用场景
常见的一种使用场景是计算某一数值列的平均值。例如上面的示例中,我们计算了学生的平均成绩。
除了计算单个列的平均值外,我们还可以根据条件计算平均值。下面是一个示例:
假设我们有一个表 sales
,记录了某商店每天的销售额,包含两列:date
(日期)和 amount
(销售额)。
CREATE TABLE sales (
date DATE,
amount DECIMAL(10,2)
);
INSERT INTO sales (date, amount) VALUES
('2022-01-01', 100.50),
('2022-01-01', 200.75),
('2022-01-02', 150.25),
('2022-01-02', 180.90),
('2022-01-03', 300.80);
现在我们想计算每天的平均销售额。可以使用 AVG
函数和 GROUP BY
子句来实现:
SELECT date, AVG(amount)
FROM sales
GROUP BY date;
运行结果为:
date | AVG(amount) |
---|---|
2022-01-01 | 150.625 |
2022-01-02 | 165.575 |
2022-01-03 | 300.800 |
这表示每天的平均销售额分别为 150.625、165.575 和 300.800。
3. AVG 函数的注意事项
在使用 AVG 函数时,需要注意以下几点:
- AVG 函数只能用于数值列,不能用于非数值列。如果尝试对非数值列使用 AVG 函数,将会导致错误。
- AVG 函数忽略 NULL 值,不会将其计算在平均值中。
- AVG 函数返回的结果默认为浮点型。如果需要返回整数型的平均值,可以使用
CAST
函数将其转换为整数。
示例:
假设我们有一个表 orders
,记录了某在线商店的订单信息,包含两列:order_id
和 total_amount
(订单总金额)。
CREATE TABLE orders (
order_id INT,
total_amount DECIMAL(10,2)
);
INSERT INTO orders (order_id, total_amount) VALUES
(1, 100.50),
(2, 200.75),
(3, NULL),
(4, 150.25),
(5, 180.90),
(6, 300.80);
现在我们想计算非 NULL 订单总金额的平均值。
SELECT AVG(total_amount)
FROM orders
WHERE total_amount IS NOT NULL;
运行结果为:
AVG(total_amount) |
---|
185.4666666666667 |
这表示非 NULL 订单总金额的平均值为 185.47。
如果我们希望返回整数型的平均值,可以使用 CAST
函数将其转换为整数:
SELECT CAST(AVG(total_amount) AS INT)
FROM orders
WHERE total_amount IS NOT NULL;
运行结果为:
CAST(AVG(total_amount) AS INT) |
---|
185 |
这表示非 NULL 订单总金额的整数型平均值为 185。
4. 总结
本文介绍了 SQL 中的 AVG 函数的用法。通过 AVG 函数,我们可以方便地计算数值列的平均值。除了基本的用法外,我们还探讨了根据条件计算平均值的方法,并提醒了一些需要注意的事项。