6. 查询平均成绩大于80分的学生的学号、姓名、平均成绩,按平均成绩降序排序;(提示:三个表的连接、分组+筛选、排序)
时间: 2024-12-11 08:18:34 浏览: 12
为了查询满足条件的学生信息,我们需要从学生的成绩数据表、学生基本信息表以及课程关联表进行连接,并结合分组、筛选和排序操作。假设我们有以下三张表:
1. 学生基本信息表 (Student):包含学号(student_id), 姓名(name)
2. 成绩记录表 (ScoreRecord): 包含学号(student_id), 课程名(course_name), 分数(score)
3. 课程关联表 (CourseLink): 包含课程名(course_name) 和课程所属的平均成绩(course_avg_score)
我们可以使用SQL语句来获取这些信息:
```sql
SELECT S.student_id, S.name, CL.course_avg_score
FROM (
SELECT student_id, AVG(score) as avg_score
FROM ScoreRecord
GROUP BY student_id
) AS Student_Avg_Scores
JOIN Student S ON S.student_id = Student_Avg_Scores.student_id
JOIN CourseLink CL ON S.course_name = CL.course_name
WHERE Student_Avg_Scores.avg_score > 80
ORDER BY Student_Avg_Scores.avg_score DESC;
```
这个查询首先计算每个学生的平均分数(分组并取平均),然后通过`JOIN`将结果与学生基本信息和课程关联表联接,最后筛选出平均成绩大于80分的学生,并按照平均成绩从高到低排序。
阅读全文