创建存储过程p1,求指定学院的课程平均分,结果显示学院名和平均分。
时间: 2023-08-23 07:10:18 浏览: 263
假设我们有以下的表结构:
```
学生表(Student):
学号(Sid) 姓名(Sname) 年龄(Sage) 性别(Ssex) 所在学院(Sdept)
001 张三 20 男 计算机系
002 李四 19 女 外语系
003 王五 20 男 机械系
004 赵六 18 女 计算机系
课程表(Course):
课程号(Cid) 课程名(Cname) 学分(Ccredit)
101 数据结构 4
102 计算机组成原理 3
103 英语 2
104 机械制图 3
成绩表(Grade):
学号(Sid) 课程号(Cid) 分数(score)
001 101 90
001 102 85
001 103 80
002 102 75
002 103 82
003 101 88
003 104 92
004 101 78
004 102 70
```
我们可以创建以下存储过程:
```
CREATE PROCEDURE p1
@dept nvarchar(50)
AS
BEGIN
SELECT Sdept, AVG(score) AS avg_score
FROM Student, Grade
WHERE Student.Sid = Grade.Sid AND Student.Sdept = @dept
GROUP BY Sdept
END
```
这个存储过程接受一个参数 @dept,表示要求哪个学院的平均分。它会在 Student 表和 Grade 表之间进行连接,筛选出所在学院为 @dept 的学生的成绩,求出平均值并返回结果集,包括学院名和平均分。
例如,我们可以执行以下语句来调用这个存储过程:
```
EXEC p1 '计算机系';
```
它会返回以下结果:
```
Sdept avg_score
计算机系 84.3333333333333
```
阅读全文