mysql查询不同老师所教不同课程平均分从高到低显示
封面图
•
2026-01-14
•
MySQL
247
0
0
0
要查询不同老师所教的不同课程的平均分,并按平均分从高到低显示,你需要有以下几张表: - `teachers` 表(教师信息) - `courses` 表(课程信息) - `scores` 表(学生成绩) 假设表结构如下: ### 1. 表结构示例 **teachers 表:** ```sql CREATE TABLE teachers ( teacher_id INT PRIMARY KEY, name VARCHAR(50) ); ``` **courses 表:** ```sql CREATE TABLE courses ( course_id INT PRIMARY KEY, course_name VARCHAR(100), teacher_id INT, FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id) ); ``` **scores 表:** ```sql CREATE TABLE scores ( score_id INT PRIMARY KEY, student_id INT, course_id INT, score DECIMAL(5,2), FOREIGN KEY (course_id) REFERENCES courses(course_id) ); ``` --- ### 2. 查询语句 下面的 SQL 查询可以获取每个老师所教的课程的平均分,并按平均分从高到低排序: ```sql SELECT t.name AS teacher_name, c.course_name, AVG(s.score) AS average_score FROM teachers t JOIN courses c ON t.teacher_id = c.teacher_id JOIN scores s ON c.course_id = s.course_id GROUP BY t.teacher_id, c.course_id ORDER BY average_score DESC; ``` --- ### 3. 如果只需要老师和平均分(不区分课程): 如果你只想知道每位老师的平均分(不管哪门课),可以这样写: ```sql SELECT t.name AS teacher_name, AVG(s.score) AS average_score FROM teachers t JOIN courses c ON t.teacher_id = c.teacher_id JOIN scores s ON c.course_id = s.course_id GROUP BY t.teacher_id ORDER BY average_score DESC; ``` --- ### 4. 如果你希望显示“不同老师所教不同课程”的平均分,而不是所有课程的总平均分,那么第一个查询是正确的。 --- 如有更多表结构或字段需要调整,请提供详细信息,我可以帮你定制更精确的 SQL。
上一篇:
mysql查询学生的总成绩并进行排名
下一篇:
mysql查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
标题录入,一次不能超过6条
留言
评论