方法一:

-- 第一步:筛选观看次数大于1的视频
with selected_play as (
select uid,cid,count(*) as cnt
from play_record_tb
group by uid,cid 
having count(*) >= 2)

/* 第二步:与course_info联合,获取到release_date
select c.cid,c.release_date,s.cnt as pv
from course_info_tb c inner join selected_play s on c.cid = s.cid */

-- 第三步:row_number()排序,输出
select cid,round(pv*1.0,3),rk 
from 
(
select cid,pv,row_number() over(order by pv desc,release_date desc) as rk
from(select c.cid,c.release_date,s.cnt as pv
from course_info_tb c inner join selected_play s on c.cid = s.cid) t1) t2
where rk <= 3
order by rk