MySQL刷题笔记
抖音题库
1-计算视频的完播率
完播率需要计算结束时间与开始时间的差值与视频时长的关系
这里巧妙的使用if和count来对完成播放的视频进行计数
2-计算播放进度,将大于60%的类别输出
代码看起来都不难理解,使用timestampdiff对时间进行计算,使用having对计算结果进行筛选
3-统计有用户互动的最近一个月中,每类视频的转发量与转发率
主要考察“最近一个月”的条件限定,将日期与最大日期进行差值计算,建立子表来进行计算
4-计算2021年里每个创作者每月的涨粉率以及截止当月的总粉丝数量
考察一个涨粉率的计算:(加粉-掉粉)/播放量
另外就是“截止当月的粉丝数量”这个需要使用到窗口函数了
5-2021年国庆前三天,每类视频每天的近一周总点赞量和最大单天转发量
与4类似,这里同样考察了窗口函数的调用,知识一个是sum一个max
6-找出近一个月发布的视频中,热度最高的top3视频
考察热度的计算,以及“近一个月”这个考点(使用的方法与3一样,没啥好看的)
百度题库
1-统计2021年11月每天的人均浏览文章时长(秒)
这里的人均并不是用的avg,需要计算
2-统计每篇文章的同一时刻最大在看人数
考察如何计算瞬时的最大计数(在看人数),这个有点难理解
在线教育
1-统计科目转化率(报名人数/浏览人数)
送分的,没啥考察点
2-统计直播开始时(19:00),各个科目的在线人数
考察时间条件的设定,使用between是需要保证对比时间格式的一致
3-统计每个科目的平均观看时长(分钟)
考察平均的计算吧,比较简单,也没啥说的
4-统计每个科目的出勤率(在线10分钟人数/报名人数)
没有什么难点,但是在手敲时发现这个表的连接会很复杂,这个时候使用子表,直接用join会显得非常清晰和简洁
5-统计每个科目的最大同时在线人数
前面也出现过类似的难题,解法是一致的,这里详细说明一下
①合并登入和登出时间,并记录1与-1的uv列
②使用开窗函数,按课程id分组,时间前后排列,对uv值进行计算得到在线人数列
③使用max找到最大值,然后进行表的拼接