风雪行
风雪行
全部文章
分类
题解(11)
归档
标签
去牛客网
登录
/
注册
风雪行的博客
全部文章
(共8篇)
题解 | #零食类商品中复购率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
400
题解 | #统计活跃间隔对用户分级结果#
代码挺长的, 具体我一段段说明一下 子查询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
题解 | #国庆期间每类视频点赞量和转发量#
题解: 如注释, 考察窗口函数的使用, 以及对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