/*注意:窗口函数不能嵌套,窗口函数中的列必须出现在同层级select中,非聚合列必须在group by中,where和having都不能接窗口函数 连表:cid,pv,rk-----连接course_info_tb和play_record_tb 计数:观看次数n大于1---重复次数记为n 排序:按排名,次数相同时,按发布时间desc 筛选:n>1且重复观看排名次数排名前三(若没有三个输出全部) */ select t3.cid,t3.pv,t3.rk from(select t2.cid ,t2.pv ,t2.release_date ,row_number() over(order by t2.pv desc,t2.release_date desc) as rk from (select t1.cid ,t1.repeat_cnt ,sum(t1.repeat_cnt) over(partition by t1.cid) as pv ,max(t1.release_date) as release_date from( select p.cid ,p.uid ,c.release_date ,count(*) as repeat_cnt from course_info_tb c join play_record_tb p on c.cid = p.cid group by p.cid,p.uid,c.release_date ) t1 where t1.repeat_cnt > 1 group by t1.cid,t1.repeat_cnt ) t2 group by t2.cid,t2.pv,t2.release_date ) t3 where t3.rk <= 3 group by t3.cid,t3.pv order by rk



京公网安备 11010502036488号