MySQL创建一个带输入参数得存储过程,输入分数参数,执行存储工程得到平均分大于该分数的学生统计成绩信息(包括学号,姓名,平均分,课程门数字段)
时间: 2023-08-05 22:01:52 浏览: 117
以下是一个创建带输入参数的MySQL存储过程的示例,该存储过程会返回平均分大于指定分数的学生统计成绩信息:
```sql
CREATE PROCEDURE `GetStudentStats`(IN min_score INT)
BEGIN
SELECT s.student_id, s.student_name, COUNT(DISTINCT sc.course_id) AS num_courses, AVG(sc.score) AS avg_score
FROM students s
INNER JOIN scores sc ON s.student_id = sc.student_id
GROUP BY s.student_id
HAVING AVG(sc.score) > min_score;
END
```
在这个存储过程中,我们定义了一个输入参数 `min_score`,它表示最低平均分数。存储过程内部使用了两个表 `students` 和 `scores`,其中 `students` 表包含了学生的信息(学号和姓名),`scores` 表包含了每个学生所选的所有课程的成绩信息(学号、课程号和成绩)。
在存储过程中,我们使用了一个内连接将这两个表连接起来,并通过 `GROUP BY` 子句将结果按学生进行分组。然后,我们使用 `AVG` 函数计算每个学生的平均分数,并使用 `HAVING` 子句过滤出平均分数大于指定分数的学生。最后,我们返回学生的学号、姓名、选课门数和平均分数。
要执行这个存储过程,可以使用以下代码:
```sql
CALL GetStudentStats(80);
```
这将返回平均分数大于80分的学生统计成绩信息。你可以根据需要调整输入参数的值。
阅读全文