with tiaojian as ( select uid, sum(is_click)/count(id) as ctr, sum(is_convert)/sum(is_click) as cvr, dense_rank()over(order by sum(is_convert)/sum(is_click) desc,uid desc) as m, dense_rank()over(order by sum(is_click)/count(id) desc,uid desc) as d from user_res_event_log_tb where date_format(event_date,"%Y%m")=202208 and rid like "ad%" group by uid ) select t.uid, t.diff, round(t.ctr,3) as ctr, round( t.cvr,3) as cvr from( select uid, ctr,cvr, abs(cast(d as signed)-cast(m as signed)) as diff, dense_rank()over(order by abs(cast(d as signed)-cast(m as signed)) desc,uid desc) as pt from tiaojian ) as t where t.pt<=2