我在一个数据库表中有学生标记,例如
studid, studname, m1, m2, m3
和学生'个人信息在另一个数据库表中,如
studid, studname.
我想加入两个表来获得studid,studname,((m1,m2,m3)必须总和为' total')。
学生&#39;如果m1,m2,m3 <40则必须显示结果,否则通过。
我也想只为那些有通过分数的学生显示等级。
答案 0 :(得分:0)
select ID, Name, CASE WHEN total > 40 THEN 'Pass' ELSE 'fail' end from
(select m.studid as ID, m.studname as Name, sum(m1)+sum(m2)+sum(m3) as total from marks m NATURAL JOIN info i group by studid,studname )
答案 1 :(得分:0)
试试这个,
select studID, Studname, m1, m2, m3, (m1+ m2+ m3) as 'Total',
case
when(m1<40 OR m2<40 OR m3<40)
then 'FAIL'
else 'PASS'
end as 'Result'
它应该有用。你可以加入2个表来产生欲望的结果
答案 2 :(得分:0)
您可以将DENSE_RANK()
与CASE
这样使用。
SELECT studid, studname,(m1 + m2 + m3) as Totalmarks,
CASE WHEN (m1 >= 40 AND m2 >= 40 AND m3 >= 40) THEN 'PASS' ELSE 'FAIL' END,
CASE WHEN (m1 >= 40 AND m2 >= 40 AND m3 >= 40) THEN DENSE_RANK()OVER(ORDER BY (m1 + m2 + m3) DESC) ELSE NULL END std_rank
FROM studentmarks
WHERE m1 >= 40 AND m2 >= 40 AND m3 >= 40
修改强>
如果您想要显示所有学生,请删除WHERE
条款