SQL查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
时间: 2024-11-06 14:21:22 浏览: 33
(完整word版)SQLserver2008数据库课程设计范例-学生成绩管理系统报告.doc
在SQL查询中,你可以使用JOIN、GROUP BY和HAVING子句来找出选修了两门及以上且有一门或多门课程不及格的学生的相关信息。假设我们有两个表,一个是`students`(包含学生的信息,如`student_id`和`name`),另一个是`courses`(包含课程信息以及学生的成绩,如`course_id`, `student_id`, 和`score`)。下面是一个示例查询:
```sql
SELECT s.student_id, s.name, AVG(c.score) as average_score
FROM students s
JOIN (
SELECT student_id
FROM courses
WHERE score < 60 -- 这里假设不及格分数为60分
GROUP BY student_id
HAVING COUNT(course_id) >= 2 -- 检查是否有两门及以上的不及格课程
) c_on_incomplete_courses ON s.student_id = c_on_incomplete_courses.student_id
GROUP BY s.student_id, s.name;
```
这个查询首先从`courses`表中筛选出所有不及格课程的学生,并计算每个学生有多少门不及格课程(HAVING子句)。然后,通过JOIN将这些不及格课程的学生ID连接到`students`表,最后按学号和姓名分组并计算他们的平均成绩。
阅读全文