sqlserver用sql语句完成:查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
时间: 2024-11-06 10:19:50 浏览: 23
SQLSERVER查询练习习题.doc
你可以使用 SQL Server 的 `JOIN`, `GROUP BY`, `HAVING` 和 `AVG` 函数来实现这个查询。假设我们有两个表:`Students` 存储学生信息(`StudentID`, `Name`),`Grades` 存储成绩信息(`StudentID`, `CourseID`, `Grade`)。查询语句如下:
```sql
SELECT s.StudentID, s.Name, AVG(g.Grade) AS AverageGrade
FROM Students s
JOIN Grades g ON s.StudentID = g.StudentID
GROUP BY s.StudentID, s.Name
HAVING COUNT(DISTINCT CASE WHEN g.Grade < 60 THEN g.CourseID END) >= 2;
```
这里解释一下各个部分:
- `JOIN` 将学生表和成绩表基于 `StudentID` 进行连接。
- `GROUP BY` 按照学生的学号和姓名分组,以便计算每个学生的平均成绩。
- `AVG(g.Grade)` 计算每个学生的平均成绩。
- `HAVING` 条件筛选出那些至少有两门课不及格的学生,`COUNT(DISTINCT CASE WHEN g.Grade < 60 THEN g.CourseID END)` 统计每个学生的不及格课程数(假定及格分数为60及以上)。
阅读全文