with a1 as (
select uid,cid,count(*) as c
from play_record_tb
group by uid,cid
having count(*) > 1),

a2 as (select cid,sum(c) as pv,release_date
from a1
left join course_info_tb cit 
using(cid)
group by cid,release_date)

select cid,pv,row_number() over(order by pv desc,release_date desc) as rk
from a2
order by rk
limit 3