sqlserver 创建一个函数,根据教师姓名查询该教师所教课程名、学生人数、平均成绩、最高成绩、最低成绩。
时间: 2023-08-10 11:03:54 浏览: 208
好的,这是一个比较复杂的函数,需要连接多个数据表,你的数据库中是否已经存在教师、课程、学生、成绩等相关数据表?如果没有,你需要先创建这些数据表并将数据插入到其中。此外,你使用的是哪种数据库管理系统?MySQL,Oracle还是其他的?这些信息对于编写函数是很重要的。
以下是根据教师姓名查询该教师所教课程名、学生人数、平均成绩、最高成绩、最低成绩的函数:
```sql
CREATE FUNCTION [dbo].[GetTeacherInfo](@teacher_name VARCHAR(50))
RETURNS TABLE
AS
RETURN
SELECT
c.name AS course_name,
COUNT(DISTINCT s.id) AS student_count,
AVG(sc.score) AS avg_score,
MAX(sc.score) AS max_score,
MIN(sc.score) AS min_score
FROM
teacher t
JOIN course c ON t.course_id = c.id
JOIN student s ON s.course_id = c.id
JOIN score sc ON s.id = sc.student_id AND c.id = sc.course_id
WHERE
t.name = @teacher_name
GROUP BY
c.name;
```
这个函数接受一个参数 `@teacher_name`,表示要查询的教师姓名。它返回一张表,包含以下字段:
- `course_name`:课程名称
- `student_count`:学生人数
- `avg_score`:平均成绩
- `max_score`:最高成绩
- `min_score`:最低成绩
函数中使用了多个 JOIN,将教师、课程、学生和成绩这些表连接在一起。然后使用 WHERE 子句过滤出指定教师的数据,并使用 GROUP BY 子句按照课程名称进行分组,计算出学生人数、平均成绩、最高成绩和最低成绩。最后将这些结果作为一张表返回。
阅读全文