1、orderby只能在union函数合并后使用一次
2、要注意取得数据是否需要去重
3、每次得分不低于85,即对应用户最低得分不能小于85
4、计算时间差使用函数TIMESTAMPDIFF(second,start_time,submit_time)

select uid,
       'activity1' as activity
from exam_record
where year(submit_time) = 2021
group by uid
having min(score) >= 85


union 

select distinct uid,
"activity2" activity
from exam_record er
join examination_info ei
using(exam_id)
where year(submit_time)=2021
and TIMESTAMPDIFF(second,start_time,submit_time)<=ei.duration*30
and ei.difficulty="hard"
and score>80

order by uid