select
    pt.cid cid
    ,CAST(count(*) as DECIMAL(10,3)) pv
    ,row_number()over(order by count(*) desc, release_date desc) rk
from play_record_tb pt
left join course_info_tb ct
on pt.cid = ct.cid
group by uid, pt.cid, release_date
having count(*) > 1
limit 3