with cte as ( select uid,start_time,submit_time,tag,concat(date(start_time),':',tag) as deta from exam_record left join examination_info using(exam_id) where year(start_time)='2021' ) select uid,count(if(submit_time is null,1,null)) as incomplete_cnt, count(submit_time) as complete_cnt, group_concat(distinct deta ORDER BY date(start_time),tag separator ';') as detail from cte group by uid having complete_cnt>=1 and incomplete_cnt>1 and incomplete_cnt<5 order by incomplete_cnt desc