多表分组统计查询 查询每个学生的选课总学分、总学时,输出学号、姓名、总学分、总学时。(提示:每门课的学时=学分*10)
时间: 2023-06-16 08:07:38 浏览: 709
10、创建视图,显示每名学生的姓名、选修的课程门数、总周学时数、总学分数和加权平均分的查询,
5星 · 资源好评率100%
可以使用多表联合查询和分组统计函数来实现这个查询,假设我们有以下三个表:
- 学生表(student),包含学生的学号和姓名。
- 课程表(course),包含课程的编号、名称和学分。
- 选课表(selection),包含学生选课的记录,包括学生学号、课程编号和成绩。
则可以使用如下的 SQL 查询语句:
```
SELECT s.student_id, s.student_name, SUM(c.credit) AS total_credit, SUM(c.credit * 10) AS total_hours
FROM student s
INNER JOIN selection sel ON s.student_id = sel.student_id
INNER JOIN course c ON sel.course_id = c.course_id
GROUP BY s.student_id, s.student_name
```
解析:
- 使用 INNER JOIN 子句将学生表、选课表和课程表联合查询,得到每个学生选课的详细记录。
- 使用 GROUP BY 子句将结果按照学生的学号和姓名分组,得到每个学生的总学分和总学时。
- 使用 SUM() 函数统计每个学生的总学分和总学时。
注意事项:
- 如果一个学生没有选课记录,则在结果中不会出现该学生的信息。如果需要包含所有学生的信息,可以使用 LEFT JOIN 子句将学生表左连接到选课表和课程表。
- 如果一个学生选了多门课程,那么每门课程的学时是学分乘以10,因此需要在统计总学时时将学分乘以10。
阅读全文