创建一个用户自定义函数,功能为产生一张有关学生成绩统计的报表。该报表显示每一门课程的课程号、课程名、选修人数、本门最高分、最低分和平均分。调用这个函数,生成相应的报表并给用户浏览。(多语句表值函数)
时间: 2024-03-05 08:53:18 浏览: 88
一个简单的学生课程系统,可以创建学生,课程,成绩,以及计算最高对分。
好的,我可以帮您编写这个用户自定义函数。以下是函数的代码:
```mysql
CREATE FUNCTION generate_report()
RETURNS TABLE(
course_id INT,
course_name VARCHAR(50),
num_of_students INT,
max_score FLOAT,
min_score FLOAT,
avg_score FLOAT
)
BEGIN
DECLARE total_students INT;
SELECT COUNT(*) INTO total_students FROM student;
RETURN SELECT
c.course_id,
c.course_name,
COUNT(*) AS num_of_students,
MAX(s.score) AS max_score,
MIN(s.score) AS min_score,
AVG(s.score) AS avg_score
FROM course c
INNER JOIN student_course sc ON c.course_id = sc.course_id
INNER JOIN student s ON sc.student_id = s.student_id
GROUP BY c.course_id, c.course_name;
END;
```
这个函数使用了多语句表值函数的形式,返回一张表格,其中包含每一门课程的课程号、课程名、选修人数、本门最高分、最低分和平均分。函数中使用了多个 SQL 语句,首先获取学生总人数,然后通过 INNER JOIN 操作连接三张表(course、student_course 和 student)来获取每一门课程的相关信息。最后使用 GROUP BY 子句对结果进行分组,并返回一张包含统计信息的表格。
要调用这个函数,您只需要执行以下 SQL 语句:
```mysql
SELECT * FROM generate_report();
```
这个语句将会生成相应的报表,并将其显示在查询结果中。请注意,您需要在调用函数之前先在数据库中创建相应的表(course、student_course 和 student),并且这些表需要包含正确的字段和数据。
阅读全文