基于school数据库中的student, course, sc表,在SQL数据库中创建满足下述要求的存储过程:查询指定系的学生中,选课门数最多的学生学号、选课门数和平均成绩。
时间: 2024-02-06 15:12:01 浏览: 94
Student、Course、SC表的sql文件
好的,根据您的要求,我已经为您编写了下面的存储过程:
```
CREATE PROCEDURE sp_getMaxCourseNumAndAvgScore
@deptName VARCHAR(50)
AS
BEGIN
SELECT TOP 1 s.sid AS '学号', COUNT(sc.cid) AS '选课门数', AVG(sc.score) AS '平均成绩'
FROM student s
JOIN sc ON s.sid = sc.sid
JOIN course c ON sc.cid = c.cid
WHERE s.dept = @deptName
GROUP BY s.sid
ORDER BY COUNT(sc.cid) DESC
END
```
该存储过程的作用是查询指定系的学生中,选课门数最多的学生学号、选课门数和平均成绩。其中,存储过程接收一个参数 @deptName,表示指定的系名。
在存储过程中,我们使用了 INNER JOIN 连接了 student, sc 和 course 表,通过 WHERE 子句限定了指定系的学生,使用 GROUP BY 子句和 COUNT 函数计算每个学生的选课门数,并使用 AVG 函数计算每个学生的平均成绩。最后,我们使用 ORDER BY 子句按照选课门数的降序排序,并使用 TOP 1 子句获取选课门数最多的学生的信息。
您可以根据需要修改存储过程中的表名、字段名和参数名,以适应您的实际情况。
阅读全文