sql查询选修课程2门以上且成绩都在80分以上的学生姓名,专业,总学分
时间: 2024-03-18 11:42:14 浏览: 108
学生选修课查询系统
好的,针对你的补充要求,我们可以在之前的 SQL 语句的基础上进行一些改进,以得到选修课程 2 门以上且成绩都在 80 分以上的学生的姓名、专业和总学分信息。具体的 SQL 语句如下:
```
SELECT s.student_name, s.major, SUM(c.credit) AS total_credit
FROM student s, course c, student_course sc
WHERE s.student_id = sc.student_id
AND c.course_id = sc.course_id
AND c.course_name IN (
SELECT course_name
FROM student_course
WHERE score >= 80
GROUP BY course_name
HAVING COUNT(*) >= 2
)
AND sc.score >= 80
GROUP BY s.student_name, s.major
HAVING COUNT(DISTINCT c.course_name) >= 2
```
解释一下这个 SQL 语句:
首先,我们需要从 student_course 表中找到所有成绩大于等于 80 分的课程,并且这些课程的选修人数不少于 2 人。这部分代码与之前的 SQL 语句是一样的。
接下来,我们需要从 student_course 表中筛选出所有选修了这些课程的学生,并且这些学生选修的课程数目不少于 2 门。为了实现这个目标,我们在之前的 SQL 语句的基础上增加了一个筛选条件,即选修课程数目不少于 2 门。
最后,我们需要在 student、course 和 student_course 三个表中联合查询,以获取每个学生的姓名、专业和总学分信息。具体地,我们使用了 INNER JOIN 子句将这三个表联合起来,并且使用了 GROUP BY 子句和 SUM 函数来计算每个学生的总学分。
最终,我们得到的结果是所有选修了至少 2 门成绩都在 80 分以上的课程的学生的姓名、专业和总学分信息。
阅读全文