用一SQL语句查询出每门课都大于 80 分的学生姓名
时间: 2024-03-07 12:48:55 浏览: 109
【SQL语句练习】(一) 查询学生获得的总学分
4星 · 用户满意度95%
可以使用如下的 SQL 语句来查询出每门课都大于 80 分的学生姓名:
```
SELECT s.student_name
FROM student s
JOIN course_selection cs ON s.student_id = cs.student_id
JOIN course c ON cs.course_id = c.course_id
WHERE cs.score > 80
GROUP BY s.student_name
HAVING COUNT(*) = (SELECT COUNT(*) FROM course);
```
其中,`student` 表表示学生信息,包含 `student_id` 和 `student_name` 两个字段;`course_selection` 表表示选课信息,包含 `student_id`、`course_id` 和 `score` 三个字段;`course` 表表示课程信息,包含 `course_id` 和 `course_name` 两个字段。这个 SQL 语句使用 `JOIN` 连接三个表,然后使用 `WHERE` 条件过滤每门课都大于 80 分的选课记录,使用 `GROUP BY` 分组,最后使用 `HAVING` 条件过滤每门课都大于 80 分的学生。其中,`COUNT(*)` 表示统计分组中的行数,这里使用子查询获取了所有课程的数量,然后通过 `HAVING` 条件来判断每个学生的选课数量是否等于课程数量,从而确定每门课都大于 80 分的学生。
阅读全文