3.创建名为s_info的存储过程,要求输入某学生的姓名时输出该学生所学课程的门数以及他的平均成绩
时间: 2024-03-19 10:44:50 浏览: 52
编制一个程序,要求输入5个学生的学号、2门课的成绩,然后输出每个学生的学号、2门课成绩、平均成绩。
3星 · 编辑精心推荐
好的,以下是创建名为s_info的存储过程的代码,满足你的要求:
```sql
CREATE PROCEDURE s_info(IN s_name VARCHAR(50))
BEGIN
DECLARE s_id INT;
DECLARE course_count INT;
DECLARE grade_sum FLOAT;
DECLARE avg_grade FLOAT;
SELECT id INTO s_id FROM students WHERE name = s_name;
SELECT COUNT(*) INTO course_count FROM courses WHERE student_id = s_id;
SELECT SUM(grade) INTO grade_sum FROM courses WHERE student_id = s_id;
SET avg_grade = grade_sum / course_count;
SELECT CONCAT(s_name, '学生所学课程的门数为', course_count, ',平均成绩为', avg_grade) AS result;
END
```
以上代码中,我们先根据输入的学生姓名查询到该学生在学生表中的id,然后再根据该id查询到该学生在课程表中上了多少门课程以及所有课程的成绩总和。最后,根据总成绩和课程门数计算出平均成绩,并将结果返回。
阅读全文