风雪行
风雪行
全部文章
分类
题解(11)
归档
标签
去牛客网
登录
/
注册
风雪行的博客
全部文章
(共15篇)
题解 | #零食类商品中复购率top3高的商品#
呃, 先上最直观的思路: 先写一个子查询, 根据product_id分组, 查询对应商品狗买的总人数(无近90天限制) 根据时间过滤, 商品product_id分组, 查询出近90天购买最少两次的人数 然后根据商品product_id连接, 相除即可 下边说一下我的解法 (追求用窗口函数一步到...
Oracle
Mysql
Sqlite
2022-07-28
11
576
题解 | #连续签到领金币#
遇到比较复杂的逻辑问题时, 首先就是要一步步拆解细化 首先是只有artical_id为0时sign_in值才有效, 计算每个用户2021年7月以来每月获得的金币数(该活动到10月底结束,11月1日开始的签到不再获得金币), 添加where条件过滤即可. 连续签到的积分怎么求? 首先明确, 连续...
Mysql
Oracle
Sqlite
2022-07-27
3
491
题解 | #每天的日活数及新用户占比#
这里先贴个不用窗口函数的常规思路的解法: 首先是in_time, out_time跨天都计为活跃的问题, 代码如下, 用union合并, 这样in_time和out_time两列转一列, 在根据日期分组, count(distinct t1.uid) 得到每日dau select dat...
Mysql
Oracle
Sqlite
2022-07-26
4
399
题解 | #统计活跃间隔对用户分级结果#
代码挺长的, 具体我一段段说明一下 子查询1: 注意: 需要尽量避免在select ( ) from table1括号中嵌套子查询, 因为外层表table1中, 每有一行, 都会执行一次内部的子查询, 这里有两种解决办法, 一种是用with as 提前将max(out_time) 保存为变量, 然...
Mysql
Oracle
Sqlite
2022-07-25
4
307
题解 | #2021年11月每天新用户的次日留存率#
留存率的计算可以说是数据分析师, 或者数据开发必备的技能了, 很多公司都会用到这个指标, 该题还有进阶版的: 计算次日至7日内的新增用户留存率 思路: 根据uid分组, 取min(in_time)最小值, 得到用户的首次登录日期, 作为衍生表t1 select ul.uid, min(...
Mysql
Oracle
Sqlite
2022-07-11
15
758
题解 | #每篇文章同一时刻最大在看人数#
考查编码和窗口函数的巧妙使用 具体思路: 根据观看进入时间, 和退出时间进行编码, select ul.artical_id, ul.in_time as view_time, 1 as `code` from tb_user_log ul where ul.artical_id...
Mysql
Oracle
Sqlite
2022-07-05
4
207
题解 | #近一个月发布的视频中热度最高的top3视频#
最近一个月发布视频中热度最高 难点: 新鲜度: 1 / (最近无播放天数 + 1), 首先要获取到当前时间, 也就是 tb_user_video_log 的最大播放时间; 具体思路: 根据 video_id 进行分组, 取到的 max(end_time) 只是对应 video_id 的 max ...
Mysql
Oracle
2022-06-19
17
454
题解 | #国庆期间每类视频点赞量和转发量#
题解: 如注释, 考察窗口函数的使用, 以及对sql执行顺序的理解 需要注意的是: rows需要往前推6行(题目给出的条件是前7天都是连续的) 第一次查询可以将时间限定为10.1往前推7天,以减少数据扫描select * from ( select vi.tag, date(ul...
Mysql
Oracle
Sqlite
2022-06-13
7
245
题解 | #每个创作者每月的涨粉率及截止当前的总粉丝量#
计算2021年里每个创作者每月的涨粉率及截止当月的总粉丝量 截止当月的总粉丝量, 虽然在在where 条件中过滤2021年的数据, 但是在2021年之前如果有粉丝的话, 那么该计算方式就是只能计算2021年截止当月的累计粉丝量 窗口函数sum() over()的使用, partition by 表...
Mysql
Oracle
Sqlite
2022-06-11
6
392
题解 | #每类视频近一个月的转发量/率#
关于本题, 其实没有啥难度, 关键在于他对近一个月的转发量, 中一个月定义不清晰 开始我想的是 start_time >= date_sub(now(), interval 30 day), 但是一看测试用例发现行不通, 必须以题目提供的最大观看时间往前推一个月 select vi.tag, ...
Mysql
Oracle
2022-06-11
2
235
首页
上一页
1
2
下一页
末页