使状态失败并通过,从阈值分数

make status fail & pass, from treshold score

我需要帮助来添加状态为通过或未通过的新列(如果考试分数高于及格阈值)。这是语法

SELECT ID, COURSE_ID, PASS_THRESHOLD, UPDATE_DT
FROM univ.exam;
SELECT ID, STUDENT_ID, EXAM_ID, EXAM_DT, SCORE
FROM univ.exam_submission;


select STUDENT_ID,EXAM_ID,SCORE,PASS_THRESHOLD 
from exam_submission es 
left join student s
   on es.STUDENT_ID  = s.ID
   left join exam e
   on es.EXAM_ID  = e.ID 

这是现在的结果:

STUDENT_ID  EXAM_ID SCORE   PASS_THRESHOLD

1              3     88           65
1              5     71           70
2              1     53           55
2              3     77           65
2              4     85           63

我想做成这样:` 这是结果:

STUDENT_ID  EXAM_ID SCORE   PASS_THRESHOLD  Status

1              3     88           65        Pass
1              5     71           70        Pass
2              1     53           55        Fail
2              3     77           65        Pass
2              4     85           63`       Pass
select STUDENT_ID,EXAM_ID,SCORE,PASS_THRESHOLD,
case 
 when SCORE>=PASS_THRESHOLD then 'PASSED'
 else 'Fail'
end as Flag
from exam_submission es 
left join student s  on es.STUDENT_ID  = s.ID
left join exam e    on es.EXAM_ID  = e.ID 

你可以用CASE来测试WHEN的分数是否小于pass_threshold,如果是THEN我们放'fail'否则ELSE我们放错了。
我们本可以反过来做,但是 <>=.

更简洁
select STUDENT_ID,EXAM_ID,SCORE,PASS_THRESHOLD,
CASE WHEN PASS_THRESHOLD >  SCORE THEN 'fail' ELSE 'pass' END status
from exam_submission es 
left join student s
   on es.STUDENT_ID  = s.ID
   left join exam e
   on es.EXAM_ID  = e.ID