查询不及格学生基本信息。新建一个存储过程scsp_FindFailureStudent,用以显示某门课程不及格学生的基本信息。输入参数是教师号、课程号,执行结果是按学号顺序显示该门课程不及格学生的基本信息。
时间: 2024-03-02 13:52:25 浏览: 23
好的,这是一个关于数据库的问题。根据你的要求,我已经帮你编写了一个存储过程,你可以在你的数据库中执行它。
```
CREATE PROCEDURE scsp_FindFailureStudent
@TeacherID INT,
@CourseID INT
AS
BEGIN
SELECT StudentInfo.ID AS 学号, StudentInfo.Name AS 姓名, StudentInfo.Sex AS 性别, StudentInfo.Age AS 年龄
FROM StudentInfo
INNER JOIN Score ON StudentInfo.ID = Score.StudentID
WHERE Score.TeacherID = @TeacherID AND Score.CourseID = @CourseID AND Score.Score < 60
ORDER BY StudentInfo.ID
END
```
这个存储过程的输入参数是教师号和课程号,执行结果会返回该门课程不及格学生的基本信息,按照学号顺序排序。其中,学生的基本信息包括学号、姓名、性别和年龄。注意,这个存储过程是基于两个表:`StudentInfo` 存储了学生的基本信息,`Score` 存储了学生的成绩信息,包括教师号、课程号、学生号和成绩。
相关问题
成绩换算。新建一个存储过程scsp_ExchangeGrade,用以换算课程的成绩。输入参数是教师号和课程号,执行结果是将该门课程学生成绩按如下标准换算,并返回该值(Output 参数)。换算标准:60分对应积点为1,每增加1分,积点增加0.2;每减少1分,积点减少0.1,直至0。所有学生成绩积点的平均值,就是这门课的积点。
好的,我明白了。根据你的要求,我已经创建了如下的存储过程:
```
CREATE PROCEDURE scsp_ExchangeGrade
@teacher_id INT,
@course_id INT,
@avg_point FLOAT OUTPUT
AS
BEGIN
DECLARE @total_point FLOAT
DECLARE @total_count INT
SELECT @total_point = SUM(
CASE
WHEN grade >= 60 THEN
1 + (grade - 60) * 0.2
ELSE
MAX(0, grade - 60) * -0.1
END
), @total_count = COUNT(*)
FROM student_course
WHERE teacher_id = @teacher_id AND course_id = @course_id
SET @avg_point = @total_point / @total_count
END
```
这个存储过程会根据输入的教师号和课程号,查询学生成绩并按照要求进行换算,最终计算出该门课的平均积点并将其存储在 `@avg_point` 输出参数中。
你可以通过如下的 SQL 代码调用这个存储过程:
```
DECLARE @avg_point FLOAT
EXEC scsp_ExchangeGrade @teacher_id = 1, @course_id = 2, @avg_point = @avg_point OUTPUT
SELECT @avg_point
```
其中,`@teacher_id` 和 `@course_id` 是输入参数,代表要查询的教师号和课程号;`@avg_point` 是输出参数,代表该门课的平均积点。你可以根据需要修改这些参数的值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)