SQL SELECT AVG
AVG 是在 SQL 中的一个聚合函数,用于计算表中数值列的平均值。
SQL Avg() 函数的语法
SELECT AVG(Numerical_Column_Name) FROM Table_Name ;
两个SQL Avg函数的例子
例子1:本例描述了如何在SQL表中使用AVG函数。
首先,我们需要在数据库中创建一个新表,用于运行MIN函数。
以下CREATE TABLE语句创建了 Bikes_Details 表,包含五个字段:
CREATE TABLE Bikes_Details
(
Bike_Number INT PRIMARY KEY,
Bike_Model INT,
Bike_Name VARCHAR (50),
Number_of_Bikes INT NOT NULL
Bike_Price INT NOT NULL
) ;
下面的INSERT查询将车辆记录插入 Bikes_Details 表中:
INSERT INTO Bikes_Details (Bike_Number, Bike_Model, Bike_Name, Number_of_Bikes, Bike_Price)
VALUES (2578, 2018, KTM, 3, 1500000),
(9258, 2019, Apache, 2, 3000000),
(8233, 2018, Pulsar, 6, 900000),
(8990, 2018, RX100, 7, 700000),
(9578, 2020, Splender+, 6, 8000000),
(1258, 2021, Bullet, 2, 1500000),
(2564, 2019, Passion, 4, 6000000),
(2155, 2020, Livo, 8, 1800000);
以下SELECT查询显示了 Bikes_Details 表的数据:
SELECT * FROM Bikes_Details;
Bike_Number | Bike_Model | Bike_Name | Number_of_Bikes | Bike_Price |
---|---|---|---|---|
2578 | 2018 | KTM | 3 | 900000 |
9258 | 2019 | Apache | 2 | 1100000 |
8233 | 2018 | Pulsar | 6 | 900000 |
8990 | 2018 | RX100 | 7 | 700000 |
9578 | 2020 | Splender+ | 6 | 8000000 |
1258 | 2021 | Buller | 2 | 1500000 |
2564 | 2019 | Passion | 4 | 6000000 |
2155 | 2020 | Livo | 8 | 1800000 |
以下查询从上述Bikes_Details表中找到Bike_Price列的平均值:
SELECT AVG(Bike_Price) As "Average of Bike's Price " FROM Bikes_Details;
输出:
SQL AVG函数使用WHERE子句
SQL Avg()函数还可以与SELECT查询中的WHERE子句一起使用,用于计算筛选值的平均值。
AVG函数使用WHERE子句的语法
SELECT AVG(Numerical_Column_Name) FROM Table_Name WHERE [ Condition ];
SQL Avg函数使用WHERE子句的示例
以下查询使用CREATE TABLE语句创建了 College_Student_Details 表:
CREATE TABLE College_Student_Details
(
Student_ID INT NOT NULL,
Student_Name varchar(100),
Student_Course varchar(50),
Student_Age INT,
Student_Marks INT
);
下面的SQL查询使用INSERT INTO语句将学生记录插入上述表中:
INSERT INTO College_Student_Details VALUES (101, Anuj, B.tech, 20, 88);
INSERT INTO College_Student_Details VALUES (102, Raman, MCA, 24, 98);
INSERT INTO College_Student_Details VALUES (104, Shyam, BBA, 19, 92);
INSERT INTO College_Student_Details VALUES (107, Vikash, B.tech, 20, 88);
INSERT INTO College_Student_Details VALUES (111, Monu, MBA, 21, 65);
INSERT INTO College_Student_Details VALUES (114, Jones, B.tech, 18, 93);
INSERT INTO College_Student_Details VALUES (121, Parul, BCA, 20, 97);
INSERT INTO College_Student_Details VALUES (123, Divya, B.tech, 21, 98);
INSERT INTO College_Student_Details VALUES (128, Hemant, MBA, 23, 90);
INSERT INTO College_Student_Details VALUES (130, Nidhi, BBA, 20, 65);
INSERT INTO College_Student_Details VALUES (132, Priya, MBA, 22, 99);
INSERT INTO College_Student_Details VALUES (138, Mohit, MCA, 21, 92);
让我们使用以下SELECT语句来查看上表的记录:
SELECT * FROM College_Student_Details;
Student_ID | Student_Name | Student_Course | Student_Age | Student_Marks |
---|---|---|---|---|
101 | Anuj | B.tech | 20 | 88 |
102 | Raman | MCA | 24 | 98 |
104 | Shyam | BBA | 19 | 92 |
107 | Vikash | B.tech | 20 | 88 |
111 | Monu | MBA | 21 | 65 |
114 | Jones | B.tech | 18 | 93 |
121 | Parul | BCA | 20 | 97 |
123 | Divya | B.tech | 21 | 98 |
128 | Hemant | MBA | 23 | 90 |
130 | Nidhi | BBA | 20 | 65 |
132 | Priya | MBA | 22 | 99 |
138 | Mohit | MCA | 21 | 88 |
以下AVG查询计算了上述表中大于90的 Student_Marks 的平均值:
SELECT AVG(Student_Marks) As "Average Student_Marks Greater 90" FROM College_Student_Details WHERE Student_Marks > 90;
输出:
使用DISTINCT子句的SQL AVG函数
在SELECT语句中,带有DISTINCT子句的AVG函数计算列的不同值的平均值。
使用AVG函数与Distinct子句的语法如下所示:
SELECT AVG (DISTINCT (Column_Name)) FROM Table_Name;
AVG函数使用DISTINCT子句的示例
我们使用上述的College_Student_Details表来理解带有DISTINCT子句的AVG函数的概念。
下面的查询计算了上述College_Student_Details表中Student_Marks列的唯一值的平均值:
SELECT AVG (DISTINCT (Student_Marks)) AS "Average Distinct Student Marks" FROM College_Student_Details;
输出:
AVG函数与SQL GROUP BY子句
在某些情况下,我们需要在SELECT语句中使用GROUP BY子句与AVG函数。带有GROUP BY子句的AVG函数计算相同组的不同值的平均值。
使用DISTINCT子句与AVG函数的语法如下所示:
SELECT Column_Name_1, AVG(Column_Name) FROM Table_Name GROUP BY Column_Name_1;
AVG函数与GROUP BY子句的示例
让我们以上面的 College_Student_Details 表来理解使用GROUP BY子句的AVG函数的概念。
以下查询根据以上的College_Student_Details表,计算了每个课程的平均学生分数:
SELECT Student_Course, AVG(Student_Marks) FROM Table_Name GROUP BY Student_Course;
输出:
Student_Course | AVG (Student_Marks) |
---|---|
B.tech | 91 |
MCA | 93 |
BBA | 78 |
MBA | 84 |
BCA | 97 |