题解 | 被重复观看次数最多的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 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务