一张表每门课(使用分组)都大于80的名字?

84 阅读1分钟

要找出一张表中每门课都大于80分的学生的名字,可以使用 SQL 中的 GROUP BYHAVING 子句。假设有一个表叫 scores,包含学生姓名 (student_name)、课程名称 (course_name) 和分数 (score),可以使用如下 SQL 查询:

SELECT student_name
FROM scores
GROUP BY student_name
HAVING MIN(score) > 80;

这条 SQL 查询首先按学生姓名进行分组,然后使用 HAVING 子句确保每个学生的最低分数都大于80。这样就能筛选出每门课都大于80分的学生名字。

还有其他方法吗?

SELECT DISTINCT student_name FROM scores s1 WHERE NOT EXISTS ( SELECT course_name FROM scores s2 WHERE s2.student_name = s1.student_name AND s2.score <= 80 );