题解 | 输出播放量最高的视频

输出播放量最高的视频

https://www.nowcoder.com/practice/9e9cb264e1f64e28846975d5a32ba8e4

-- 核心思路如下:
-- 1.贪心相同视频id的时间区间
-- 2.可转化为统计各cid中,该cid对应的start_time被多少个[start_time,end_time]包含
-- 3.group by a.cid,a.id
-- 注意:这里要引入id来确定唯一一行记录
select 
    cid,
    round(cast(max(cnt) as float), 3) as max_peak_uv
from ( -- 同一个视频,遍历每一条播放记录,看和其同时间段播放的记录数
    select 
        a.cid,
        a.id,
        sum(if(a.start_time between b.start_time and b.end_time, 1, 0)) as cnt
    # select a.id, a.cid,a.start_time,b.id,b.cid,b.start_time,b.end_time
    from play_record_tb a 
    join play_record_tb b on a.cid=b.cid
    group by a.cid,a.id
) t
group by cid
order by max_peak_uv desc 
limit 3

全部评论

相关推荐

不愿透露姓名的神秘牛友
08-09 12:00
点赞 评论 收藏
分享
Twilight_m...:还是不够贴近现实,中关村那块60平房子200万怎么可能拿的下来,交个首付还差不多
点赞 评论 收藏
分享
往年强度是有多大..... “远超预期难度”害怕....
中午吃什么?:大疆是海笔,靠笔试刷人
投递大疆等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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