select cid,
	max(pv1) as pv,
    row_number() over(order by max(pv1) desc,max(release_date) desc) as rk
    from(
        select 
        uid,
        cid,
        cast(count(id)as double) as pv1
        from play_record_tb
        group by  cid,uid
        having pv1>1
    )a
    join  course_info_tb using (cid)
    group by cid
    order by pv desc
    limit 3