问题:
考试通过的定义:模块1考试成绩 >=60模块2考试成绩 >=60
每个人有多次考试记录,有一次通过则通过,若全部未通过,则为未通过
无论哪种情况都输出模块1成绩+模块2成绩和成绩最高的记录
查询所有成员最终的考核结果,结果如模板所示写出查询语句
最终结果
代码如下:望采纳
SELECT
考试编号,姓名,模块1考试成绩,模块2考试成绩,
CASE WHEN
模块1考试成绩 >= 60 AND 模块2考试成绩 >=60 THEN "考试通过" ELSE "考试未通过" END AS 考试结果
FROM
sql_2005
A有多次通过 ,只显示一次成绩。
可以看到显示通过的,如果通过次数多就将两门成绩最高着显示出来。因此这道题
没有通过的,也显示成绩最好的一次。
引用上面老哥的SQL加一层发号函数然后取第一条就行,取最高成绩你没说很细我就直接取模块一二的顺序高低了,有需要可以细化比如模块一加二排序之类,发号函数可以多套一层子查询结果精准些,手机上不好敲SQL你参照一下就好
select * from (
SELECT
考试编号,姓名,模块1考试成绩,模块2考试成绩,
CASE WHEN
模块1考试成绩 >= 60 AND 模块2考试成绩 >=60 THEN "考试通过" ELSE "考试未通过" END AS 考试结果 ,
row_number() over(partition by 姓名 order by 模块一成绩 desc, 模块二成绩 desc) rn
FROM
sql_2005
) tmp where rn =1