SQL sever 中查询所有学生学号、姓名、院系、选修课程数、考试通过的课程数、获得的总学分。,不要使用case when
时间: 2024-12-15 21:13:45 浏览: 10
精品课程教学网站源代码(附系统使用说明 ASP+SQL Sever2000)
在SQL Server中,如果你想查询所有学生的信息,包括学号、姓名、院系、他们选修的所有课程数、通过的课程数以及获得的总学分,可以使用JOIN操作连接相关的表,比如学生表(Students)、课程表(Courses)和成绩表(Grades)。假设学生有主键ID(StudentID),院系信息在另一个表Department里,每个课程有课程ID(CourseID),你可以这样做:
```sql
SELECT
s.StudentID AS 学号,
s.Name AS 姓名,
d.DepartmentName AS 院系,
COUNT(c.CourseID) AS 选修课程数,
(SELECT COUNT(*) FROM Grades g WHERE g.StudentID = s.StudentID AND g.Grade >= '及格') AS 考试通过的课程数,
(SELECT SUM(Score) FROM Courses c2 JOIN Grades g2 ON c2.CourseID = g2.CourseID AND g2.StudentID = s.StudentID) AS 总学分
FROM
Students s
JOIN
Department d ON s.DepartmentID = d.DepartmentID
LEFT JOIN
Courses c ON s.StudentID = c.StudentID
GROUP BY
s.StudentID, s.Name, d.DepartmentName;
```
这里假设成绩表(Grades)记录了学生的成绩,且有一个Grade字段表示是否及格('及格'是一个示例,实际可能是数字或其他标记)。这个查询使用了LEFT JOIN来获取所有学生的信息,即使他们没有选修某些课程。
阅读全文