列出所有通过或未通过的学生

List all students with pass or fail

我有table这样的结构

学生

Id Student name
1 AAAA
2 BBBB

主题

Id Subject name
1 Subject1
2 Subject2

标记

student_id subject_id marks
1 1 35
1 2 34
2 1 54
2 2 42

要求是,列出所有通过(所有科目得分 >=35 分)或失败(任何科目得分 <35 分)状态的学生。有什么建议吗?

不确定要添加什么 if 条件

select student.id, student.name, 'status (if marks.marks >= 35, Pass, Fail)'
from student
inner join marks on marks.student_id = student.id

预期输出

student_id student_name status
1 AAAA Fail
2 BBBB Pass

加入 StudentMarks 并按学生分组。
然后使用 CASE 表达式检查每个学生的最低分数以获取状态:

SELECT s.id student_id, s.student_name, 
       CASE WHEN MIN(m.marks) >= 35 THEN 'Pass' ELSE 'Fail' END status
FROM Student s INNER JOIN Marks m
ON m.student_id = s.id
GROUP BY s.id;

我假设 id 是 table Student 的主键。
如果不是,请将 GROUP BY 子句更改为:

GROUP BY s.id, s.student_name

demo