题解 | 被重复观看次数最多的3个视频
被重复观看次数最多的3个视频
https://www.nowcoder.com/practice/b75fa2412659422c96369976ee1f9504
-- 因为题目要求的排名不仅仅只是数字上的多少,这个‘多少’限制条件是听的次数你>1才算,所以我得知道哪个客户听的哪首歌次数>1,所以我在统计数量的时候就得按照“人id+歌id”来分组统计。 with `用户看视频次数` as (select uid,pl.cid, count(*) as `次数` from play_record_tb pl group by uid,pl.cid), -- 上面的统计我就知道了哪个客户听的哪首歌的次数,这时候我就可以挑“次数n>1”的来统计了,计算出每一首歌的次数,方便下一步的排名。 `每个视频被观看的次数` as (select y.cid, sum(`次数`) as `视频被观看次数` from `用户看视频次数`y where `次数`>1 group by y.cid ), -- 排名题目有要求,先按次数降序,然后再按发布日期晚的排序 `排名` as (select c.cid, t.`视频被观看次数`, row_number() over (order by t.`视频被观看次数` desc,c.release_date desc) as rk from `每个视频被观看的次数` t join course_info_tb c on t.cid=c.cid ) -- 找前三名 select p.cid,`视频被观看次数`,rk from `排名`p where rk<=3 order by rk
