select t.uid, sum(case when t.pday is not null then 1 else 0 end) as exam_complete_cnt from( select uid, date(start_time) as sday, date(submit_time) as pday, dense_rank()over(partition by uid order by date_format(start_time,"%Y%m") desc) as m from exam_record ) as t where t.m<=3 group by t.uid having sum(case when t.pday is not null then 0 else 1 end)=0 order by exam_complete_cnt desc,uid desc 题意为:3个月内没有未完成的状态的UID的完成次数。