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