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