定义视图V_jidian,存放学生表中的每位学生的平均绩点。视图列名分别为学号、姓名、平均绩点。每门课程的成绩与绩点间的计算方法如下: 当成绩 >= 60时,绩点 = (成绩 – 50) / 10 当成绩 < 60时,绩点 = 0 未选课学生的绩点或选课成绩为空值的课程绩点均为0。
时间: 2023-06-09 16:07:02 浏览: 184
绩点计算器
为了定义视图V_jidian,我们需要先创建一个计算平均绩点的函数,然后根据学生表中的成绩计算每位学生的平均绩点。下面是一个用于计算绩点的函数:
CREATE FUNCTION dbo.fn_get_jidian(@score INT)
RETURNS DECIMAL(4, 2)
AS
BEGIN
DECLARE @jidian DECIMAL(4, 2);
IF @score >= 60
SET @jidian = (@score - 50) / 10.0;
ELSE
SET @jidian = 0;
RETURN @jidian;
END;
该函数接受一个成绩作为参数,返回对应的绩点值。接下来我们可以使用该函数创建视图V_jidian:
CREATE VIEW V_jidian
AS
SELECT s.student_id, s.student_name, AVG(dbo.fn_get_jidian(c.score)) AS avg_jidian
FROM student s
LEFT JOIN course_score c ON s.student_id = c.student_id
GROUP BY s.student_id, s.student_name;
在该视图中,我们使用LEFT JOIN将学生表和课程成绩表连接起来,然后通过AVG函数计算每位学生的平均绩点。我们使用上文定义的函数来计算每个成绩对应的绩点值。
由于该视图是基于学生表和课程成绩表计算得出的,对于未选课学生或选课成绩为空值的课程,其绩点值均为0,这符合题目要求。
阅读全文