不精独乐乐
不精独乐乐
全部文章
分类
归档
标签
去牛客网
登录
/
注册
不精独乐乐的博客
全部文章
(共156篇)
题解 | #2021年11月每天新用户的次日留存率#
一、问题拆解:①活跃天数界定,进出时间跨天当作两天活跃;②判断是否新增用户;③判断是否次日留存。 二、解决步骤: ①活跃天数界定:因为跨天也算活跃,所以把out_time通过union跟in_time联立到一列,记为活跃日期active_day; ②新增用户if_new:该uid所有活跃日期里最小的...
2023-02-05
0
324
题解 | #每篇文章同一时刻最大在看人数#
好经典的题,第一次接触也是没思路,看了置顶回答才恍然大悟。自己再总结总结: ①某时间进入就记为1,某时间离开就记为-1,通过把时间点用±1进行编码得到可以累加的列; ②用窗口函数sum对id分组、根据时间序列和±1编码的先后排序、累加,那么任一时间点的瞬时人数就确定了 select artical...
2023-02-04
0
284
题解 | #近一个月发布的视频中热度最高的top3视频#
bug题,建议自测通过即可,提交如果不加limit筛掉bug行是不可能通过的。 select video_id, round((100*a+ 5*b+ 3*c+ 2*d)/(day_interval+1),0) as hot_index from( select tb1.video_id, ...
2023-02-04
0
236
题解 | #每个创作者每月的涨粉率及截止当前的总粉丝量#
思路: ①分组:按照author,月份进行分组; ②各计算值:每月新增粉丝=当月内粉丝变化数之和(注意把2变为-1);总播放量用count即可;累计粉丝新增数用窗口函数sum(每月新增粉丝数)over(partition by author order by 月份),注意要加order by才能逐行...
2023-02-04
0
297
题解 | #平均播放进度大于60%的视频类别#
①两表连接,先用timestampdiff/duration算出每条播放记录的播放进度,此时形成表tb1(注意:播放时长>duration时完成率也是100%,不能大于100%,要用if做个判断)。 ②对tb1子查询,根据tag分组、筛选、排序即可。(注意:数字转换为百分数可以用concat)...
2023-02-04
0
298
题解 | #各个视频的平均完播率#
①先用timestampdiff算出视频播放时间,再与t_v_i表进行左连接(左连接是因为题目要的是有播放记录的数据,故把播放记录表放在左侧即可,其他没有播放记录的视频就不会连接进来); ②根据视频播放时间是否>=duration来判断、计算完播率。 select video_id, ro...
2023-02-04
0
193
题解 | #各用户等级的不同得分表现占比#
思路: ①两表连接,用case when将分数分档,同时用count()over()窗口函数计算每个level对应的总答题数,形成表tb1; ②通过对tb1子查询,选出分档、计算比例ratio。 select level, score_grade, round(count(score_grade...
2023-02-03
0
253
题解 | #0级用户高难度试卷的平均用时和平均得分#
思路:①第二、第三张表连接,选出hard试卷对应行,然后用if处理null,即如果交卷时间是null则赋值duration和0分; ②根据uid分组,计算平均分和平均用时 select uid, round(avg(sc),0), round(avg(ti),1) from ( select ui...
2023-02-01
0
358
题解 | #每月及截止当月的答题情况#
思路: ①找出每月的新增用户,即该uid所有作答时间里最早的那一行,用min窗口函数取出最早的start_time,当min(start_time)=start_time计为1,否则记为0; ②根据月份分组,取出uid数、累计新增用户数(把前述的1求和)、最大新增数(用max窗口函数)、累计新增数(...
2023-02-01
0
223
题解 | #每份试卷每月作答数和截止当月的作答总数。#
思路:①先分组聚合算出每月答题数目;②用sum窗口函数算累加数 select *, sum(c)over(partition by exam_id order by start_month) from( select exam_id, date_format(start_time,'%Y%m') s...
2023-01-31
0
192
首页
上一页
7
8
9
10
11
12
13
14
15
16
下一页
末页