给定一个teaching数据库,为该数据库设计相应的存储过程 (1)创建一个存储过程,用输出参数返回指定学生的所有课程的期末成绩的平均值,若不指定学生姓名,则返回所有学生的所有课程的期末成绩的平均值。并查看期末考试低于70分的学生名单
时间: 2024-12-14 09:21:53 浏览: 1
为了为teaching数据库设计存储过程,首先我们需要考虑几个关键点:
1. 存储过程名称:可以命名为`GetAverageGrade` 或 `GetStudentCoursesAverage`,如果需要同时处理所有学生的平均成绩则可以用`GetOverallCourseAverage`。
```sql
CREATE PROCEDURE GetAverageGrade
@studentName NVARCHAR(50) = NULL
AS
BEGIN
IF (@studentName IS NOT NULL)
BEGIN
SELECT AVG(grade) AS AverageGrade
FROM courses c
INNER JOIN students s ON c.student_id = s.id
WHERE s.name = @studentName;
END
ELSE
BEGIN
SELECT AVG(grade) AS AverageGrade
FROM courses c
INNER JOIN students s ON c.student_id = s.id;
END
-- 获取期末成绩低于70分的学生名单
DECLARE @lowGrades TABLE (student_name VARCHAR(50), grade INT);
INSERT INTO @lowGrades
SELECT s.name, c.grade
FROM courses c
INNER JOIN students s ON c.student_id = s.id
WHERE c.grade < 70;
SELECT * FROM @lowGrades;
END
```
这个存储过程接受一个名为`@studentName`的可选参数。如果提供了一个学生名字,它会计算指定学生的课程平均分数;如果没有提供,它将计算所有学生的平均分数。此外,它还创建了一个临时表`@lowGrades`来存储那些期末成绩低于70分的学生信息。
阅读全文