select t.cid, sum(t.pv) as pv, row_number() over(order by sum(t.pv) desc,c.release_date desc) as rk from (select p.cid, count(p.uid) as pv from play_record_tb p group by p.cid,p.uid having count(p.uid)>1) t left join course_info_tb c on t.cid=c.cid group by t.cid,t.pv,c.release_date order by row_number() over(order by sum(t.pv) desc,c.release_date desc) asc limit 3