有一个[学生课程]数据库Stu_Cou,该数据库中包含三个表: 学生表: Student(Sno,Sname,Ssex,Sbirth,Spre,Sclass,Sdept) ,Sno 为关键字。 表示由学号(Sno)、姓名(Sname)、性别(Ssex)、出生日期(Sbirth)、已修学分(Spre)、班级(Sclass)、所在系(Sdept)七个属性,其中Sno为主码。 课程表Course由课程号(Cno)、课程名(Cname)、课程类型(Ctype)、先修课号(Cpno)、学分(Ccredit)五个个属性组成,记为:Course(Cno,Cname,Ctype,Cpno,Ccredit) ,Cno为主码。 学生选课表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为: SC(Sno,Cno,Grade) (Sno, Cno)为主码。 要求用SQL语句完成:查询选课学生中平均成绩大于80分的学生学号及平均成绩,查询结果按平均成绩的降序排序。
时间: 2024-03-24 12:38:39 浏览: 63
查询数据库中所有有成绩的学生的学号和课程号
4星 · 用户满意度95%
可以使用以下 SQL 语句实现:
```
SELECT Sno, AVG(Grade) AS AvgGrade
FROM SC
GROUP BY Sno
HAVING AVG(Grade) > 80
ORDER BY AvgGrade DESC;
```
这个 SQL 查询中:
- 首先从学生选课表 SC 中选取学号 Sno 和成绩 Grade 列,使用 AVG 函数计算每个学生的平均成绩并将其命名为 AvgGrade。
- 然后使用 GROUP BY 子句按学号分组,将同一学生的成绩合并在一起。
- 使用 HAVING 子句筛选出平均成绩大于 80 分的学生。
- 最后使用 ORDER BY 子句按平均成绩的降序排序,即平均成绩最高的学生排在前面。
阅读全文