数据库中查询选修两门以上课程等我学生学号极及其期末及格的平均成绩,并按其平均成绩降序输出
时间: 2024-10-11 17:09:50 浏览: 42
【SQL语句练习】(一) 查询学生获得的总学分
4星 · 用户满意度95%
在数据库中,要查询选修两门以上课程的学生学号及其对应的期末考试平均成绩,并按照平均成绩从高到低排序,通常需要使用SQL(结构化查询语言)。假设我们有一个名为`courses`的表记录课程信息,包括`student_id`(学生ID)、`course_name`和`grade`(成绩),以及一个`enrollments`表用于存储学生的选课情况,有`student_id`和`course_id`字段。那么查询语句可以类似这样:
```sql
SELECT e.student_id, AVG(c.grade) as average_grade
FROM enrollments e
JOIN courses c ON e.course_id = c.course_id
GROUP BY e.student_id
HAVING COUNT(DISTINCT c.course_id) > 1
AND MIN(c.grade) >= '及格分数线' -- 假设及格分数线是一个变量,这里用字符串形式表示
ORDER BY average_grade DESC;
```
这个查询做了以下操作:
1. `JOIN`了`enrollments`和`courses`表,通过学生ID关联学生选修的课程和课程的成绩。
2. `GROUP BY` student_id,将每个学生的成绩分组。
3. `HAVING COUNT(DISTINCT c.course_id) > 1`确保只有选修了两门及以上课程的学生才保留。
4. `MIN(c.grade) >= '及格分数线'`确保至少一门课程的期末成绩达到及格线。
5. 最后,`ORDER BY average_grade DESC`按平均成绩从高到低排序。
注意:实际应用中,"及格分数线"应该替换为具体的数值或查询表达式,这取决于数据库的具体设置。同时,你需要确保字段的数据类型和比较条件正确。
阅读全文