select
uid,
sum(if(submit_time is null ,1,0)) incomplete_cnt,
sum(if(submit_time is not null ,1,0)) complete_cnt,
group_concat(distinct concat(date_format(start_time,'%Y-%m-%d'),':',tag) separator ';') detail
from exam_record
join examination_info using(exam_id)
where year(start_time)='2021'
group by uid
having incomplete_cnt>1
and incomplete_cnt<5
and complete_cnt >= 1
order by incomplete_cnt desc