题解 | 被重复观看次数最多的3个视频
被重复观看次数最多的3个视频
https://www.nowcoder.com/practice/b75fa2412659422c96369976ee1f9504
# 请找出被重复观看数排名前三的视频,输出这些视频的课程ID、被重复观看次数和排名。结果按排名升序。若被重复观看视频不足三个,按排名全部输出。 # 若某人对某视频只观看了一次,则不计为重复观看次数,如果某人对某视频观看了n次(n>1),则记为该视频重复观看次数+n。 # 如果被重复观看次数一样大,则越晚发布的视频排名越靠前,每个视频的排名为排在他前面的视频个数+1。 select * from ( select p.cid ,p.play_cnt as pv ,row_number()over( order by p.play_cnt desc, c.release_date desc) as rk from ( select cid ,uid ,round(count(start_time)*1.0, 3) as play_cnt from play_record_tb group by cid,uid having count(start_time) > 1 ) p left join course_info_tb c on p.cid = c.cid ) t1 where rk <= 3 order by rk asc;