select uid,
count(if(submit_time is null,1,null)) as incomplete_cnt,
count(if(submit_time is null,null,1)) as complete_cnt,
group_concat(distinct concat_ws(':',date(start_time),tag) separator ';') as detail
from exam_record er
left join examination_info ei using(exam_id)
where year(start_time)=2021
group by uid
having complete_cnt>=1 and incomplete_cnt between 2 and 4
# 这边已完成数量要大于等于,之前少写个等号还以为必须子查询才可以。。。
order by incomplete_cnt desc