mysql查询各类课程的总学分_关于SQL练习2的一些写法。。。查询选修人数超过2人且成绩都在60分以上的课程 查询选修张老师讲授所有课程的学生 计算并填写学生获得的总学分...
时间: 2024-03-10 21:45:53 浏览: 85
【SQL语句练习】(一) 查询学生获得的总学分
4星 · 用户满意度95%
好的,我明白了。对于第一个问题,你可以使用以下 SQL 语句查询各类课程的总学分:
```
SELECT category, SUM(credit) AS total_credit
FROM course
GROUP BY category;
```
其中,`course` 表包含了课程的信息,包括课程名称、学分和所属类别等字段。上述 SQL 语句使用 `SUM` 函数计算每个类别的总学分,并通过 `GROUP BY` 子句对类别进行分组。
对于第二个问题,你可以使用以下 SQL 语句查询选修张老师讲授所有课程的学生:
```
SELECT student.name
FROM student
INNER JOIN score ON student.id = score.student_id
INNER JOIN course ON score.course_id = course.id
WHERE course.teacher = '张老师'
GROUP BY student.id
HAVING COUNT(DISTINCT course.id) = (SELECT COUNT(*) FROM course WHERE teacher = '张老师');
```
其中,`student` 表包含了学生的信息,`score` 表包含了学生的成绩信息,`course` 表包含了课程的信息。上述 SQL 语句使用 `INNER JOIN` 连接三个表,并使用 `WHERE` 子句过滤出张老师讲授的课程。然后,使用 `GROUP BY` 子句按学生进行分组,并使用 `HAVING` 子句筛选出选修所有张老师课程的学生。
对于第三个问题,你可以使用以下 SQL 语句计算并填写学生获得的总学分:
```
UPDATE student
SET total_credit = (
SELECT SUM(course.credit)
FROM score
INNER JOIN course ON score.course_id = course.id
WHERE score.student_id = student.id
)
WHERE id IN (SELECT student_id FROM score);
```
其中,`student` 表包含了学生的信息,`score` 表包含了学生的成绩信息,`course` 表包含了课程的信息。上述 SQL 语句使用 `UPDATE` 命令更新 `student` 表中的 `total_credit` 字段,该字段表示学生获得的总学分。更新的值通过子查询计算得出,该子查询使用 `INNER JOIN` 连接 `score` 和 `course` 表,然后使用 `WHERE` 子句过滤出该学生修过的课程,并计算总学分。最后,使用 `WHERE` 子句过滤出有成绩记录的学生。
阅读全文