成绩换算。新建一个存储过程scsp_ExchangeGrade,用以换算课程的成绩。输入参数是教师号和课程号,执行结果是将该门课程学生成绩按如下标准换算,并返回该值(Output 参数)。换算标准:60分对应积点为1,每增加1分,积点增加0.2;每减少1分,积点减少0.1,直至0。所有学生成绩积点的平均值,就是这门课的积点。
时间: 2024-03-02 21:52:48 浏览: 101
好的,我明白了。根据你的要求,我已经创建了如下的存储过程:
```
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` 是输出参数,代表该门课的平均积点。你可以根据需要修改这些参数的值。
阅读全文