• 排序,分组
  • 不需要子查询
    select
      uid,
      sum(if(submit_time is not null, 0, 1)) incomplete_cnt,
      sum(if(submit_time is not null, 1, 0)) complete_cnt,
      GROUP_CONCAT(
        distinct concat_ws(':', date_format(start_time, "%Y-%m-%d"), tag)
        order by
          start_time asc SEPARATOR ';'
      ) detail
    from
      exam_record
      left join examination_info using(exam_id)
    where
      year(start_time) = 2021
    group by
      uid
    having
      incomplete_cnt > 1
      and incomplete_cnt < 5
      and incomplete_cnt + complete_cnt >= 1
    order by
      incomplete_cnt desc