不二人生
刀光剑影江湖情,摧枯拉朽浪滔滔。功名利禄拂衣去,山高水远路迢迢。一个上得了厅堂下得了厨房、左手写诗右手写词的男人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SQL面试题——留存分析之使用bitmap 计算留存
因为使用工具的限制,所以我们实现方式也会有所不同,之前我们的实现方式比较通用,几乎所有的数据库软件都支持,今天我们看一下如何使用bitmap 来实现,首先这就需要你的数据库支持bitmap,这里我是用的是StarRocks,其实现在很多都支持了。其实这里看起来和我们常规的统计差不多,但是你要注意到visit_users 是个bitmap,也就是我们在没有改变统计方式的前提下,就实现了使用bitmap,其实这里我们也可以使用 bitmap_count函数。统计每个页面的 UV。原创 2025-05-02 11:25:37 · 283 阅读 · 0 评论 -
SQL面试题——奖金瓜分问题
这个题目还是很有意思的,一种比较常见的场景,而且考到的知识点还包含了点数学知识,关键是要构造这个等比的数列,之前我们学习的都是累加,这里是累乘或者是累除。原创 2024-12-24 15:13:12 · 18951 阅读 · 0 评论 -
SQL面试题——所有考试科目的成绩都大于对应学科平均成绩的学生
整体而言题目比较简单,一个窗口函数即可,唯一需要注意的是就是针对这种全部所有类型问题我们的处理技巧。原创 2024-12-11 13:52:37 · 23099 阅读 · 0 评论 -
SQL面试题——连续问题 去掉最大最小值的部门平均薪水
这道题目的场景还是很常见的,我们使用了两次row_number 函数,同时计算出了最大和最小值,然后去掉最大和最小值。原创 2024-12-10 12:29:43 · 23104 阅读 · 0 评论 -
SQL面试题——连续问题 连续点击三次用户
这个问题我们到这里就解决了,本质上还是连续问题,连续问题的解决步骤就是创建连续标志根据连续标志创建连续分组根据连续分组计算业务指标。原创 2024-12-09 15:10:35 · 22947 阅读 · 1 评论 -
SQL面试题——连续问题 每年成绩都有所提升的学生
这个题目考查了窗口排序函数的使用,以及连续增长问题的处理。原创 2024-12-09 12:38:35 · 22546 阅读 · 0 评论 -
SQL面试题——Meta SQL面试题 计算每个用户的受欢迎程度
这个题目也比较简单,考察的知识点比较全面,窗口函数,分组汇总,数据合并,而且这个问题容易犯错。原创 2024-12-08 11:50:38 · 22400 阅读 · 0 评论 -
SQL面试题——滴滴SQL面试题 取出累计值与1000差值最小的记录
这个题目不难,同时考察了两个基本的窗口函数。原创 2024-12-07 21:46:35 · 22559 阅读 · 0 评论 -
SQL面试题——京东SQL面试题 合并数据
这个题目的基础知识不难,就是题目表达的没有那么直观,需要理解一下,本质上还是考察窗口函数的使用以及连续问题的解决。原创 2024-12-07 15:47:49 · 22718 阅读 · 0 评论 -
SQL面试题——百度SQL面试题 连续签到领金币
其实这个题目挺有意思的,考察的知识点不少,例如日期的连续,循环日期的处理,以及当天是连续的多少天,但是这个业务场景是非常常见的。原创 2024-12-06 17:57:11 · 22737 阅读 · 0 评论 -
SQL面试题——百度SQL面试题 无效搜索
题目很简单,主要考察我们对函数的使用,没有什么难度,熟练即可。原创 2024-12-06 11:33:41 · 22613 阅读 · 0 评论 -
SQL面试题——百度SQL面试题 合并用户浏览行为
其实这种合并问题和连续问题是同一类的,解决思路都一样。原创 2024-12-06 10:16:35 · 22498 阅读 · 0 评论 -
SQL面试题——阿里SQL面试题 用户行为轨迹
这个题目不难,主要考我们几个函数的使用,对有序行转列,我们的处理方式都是一样的,我们必须把排序的字段拼接到无序的字段上,然后进行排序,最后使用array_sort 对collect 的结果进行排序,最后使用正则替换掉之前拼接上去的对象。原创 2024-12-05 17:57:21 · 21964 阅读 · 0 评论 -
SQL面试题——拼多多SQL面试题 累加刚好超过各省GDP40%的地市名称
首先我们要计算累加的GDP ,因为要计算超过省GDP 的百分之40,所以还需要省的GDP,很明显这里需要两个窗口函数来计算,但是这里有个问题就是我们要在40%的临界值进行区分。这里我们可以再算一个比例,就是当前城市之前的城市累加的GDP 占比,是用两个比例来判断刚好超过40% 的临界情况,然后对数据打上标签。江苏省的苏州19% 南京 14% 无锡 12%,苏州+南京=33% ,苏州+南京+无锡=45%,取出 苏州、南京、无锡。这里的lag_order_gdp 是为了计算截止到上一城市的累加值。原创 2024-12-05 17:56:08 · 21975 阅读 · 0 评论 -
SQL面试题——拼多多SQL面试题 求连续段的起始位置和结束位置
整体而言还是个连续问题,这里我们使用了两种创建连续标志的思路,一种是和上一个值比较,一种是使用序号做差值。原创 2024-12-05 10:53:54 · 22148 阅读 · 0 评论 -
SQL面试题——拼多多SQL面试题 求连续段的最后一个数及每个连续段的个数
今天的题目来自拼多多,我们先看一下题目描述有一张表ids记录了id,id不重复,但是会存在间断,求出连续段的最后一个数及每个连续段的个数。+---+| id|+---+| 1|| 2|| 3|| 5|| 6|| 8|| 10|| 12|| 13|| 14|| 15|+---+整体而言还是个连续问题,这里我们使用了两种创建连续标志的思路,一种是和上一个值比较,一种是使用序号做差值。原创 2024-12-05 10:45:35 · 22357 阅读 · 0 评论 -
SQL面试题——小红书SQL面试题 用户商品购买收藏行为特征加工
有两张表记录了用户的购买记录和收藏记录购买记录表order,包含自增id:id,用户ID:user_id,商品ID:goods_id,订单时间:order_time,商品类别:goods_type;用户收藏记录表collect,包含自增id,用户ID:user_id,商品ID:goods_id,收藏时间 collect_time请用一句sql语句得出以下查询结果,得到所有用户的商品行为特征,其中用户行为分类为4种:是否已购买、购买未收藏、收藏未购买、收藏且购买。分析我们的需求是请用一句sql语句得出以下原创 2024-12-04 12:04:04 · 21479 阅读 · 0 评论 -
SQL面试题——小红书SQL面试题 用户的第一个订单和最后一个订单
现有一张订单表 order 有订单ID、用户ID、商品ID、购买商品数量、购买时间,请查询出每个用户的第一条记录和最后一条记录。为了你方便学习和复现,你可使用下面的代码创建数据集df.show()原创 2024-12-04 10:51:56 · 21523 阅读 · 0 评论 -
SQL面试题——腾讯SQL面试题 合并连续支付订单
其实我们发现连续问题的解决步骤就这三板斧创建连续的标志根据连续标志创建连续分组根据分组进行业务需求实现这里的难点在于创建连续的标志。原创 2024-12-04 10:24:14 · 22111 阅读 · 0 评论 -
SQL面试题——腾讯SQL面试题 向用户推荐好友喜欢的音乐
其实这个逻辑有一点点问题,问题在哪里呢,其实在于我们在给用户推荐的时候,如果用户已经喜欢这个音乐了,那我们才推荐,就是推荐新的歌曲过去。用户关注表t1_follow(user_id,follower_id)记录用户ID及其关注的人ID,请给用户1推荐他关注的用户喜欢的音乐名称。这个时候我们再来看上面的推荐列表,很明显是有问题的,因为用户1 已经喜欢了音乐a,不需要再根据关注列表进行推荐了。这里的业务需求是,根据用户的关注列表,也就是他关注的用户,然后把关注列表里用户喜欢的音乐推荐给他。原创 2024-12-04 09:52:05 · 21077 阅读 · 0 评论 -
SQL面试题——腾讯SQL面试题 微信运动步数在好友中的排名
前面我们做过一个类似的,SQL面试题——腾讯SQL面试题 占据好友封面个数有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数今天我们的需求有三个首先我们要知道好友的好友列表,这里的好友列表里面包括自己哦,这是和之前算占据封面个数不一样的地方,还有就是我们要算的是排名,之前我们是获取的好友列表的最大步数。其实我们要是能算出来在好友列表中的排名,如果排名第一,那就是占据了这个好友的封面,也就原创 2024-12-03 11:56:48 · 20777 阅读 · 0 评论 -
SQL面试题——腾讯SQL面试题 连续5天涨幅超过5%的股票
我们看到不是所有的连续问题,我们都需要判断日期是否连续,也不是所有的连续性的问题,都是时间或者日期上的连续。原创 2024-12-03 10:43:11 · 21272 阅读 · 0 评论 -
SQL面试题——腾讯SQL面试题 占据好友封面个数
这里占据的含义是在好友的列表里排名第一,且必须超过好友的步,所有我们就要首先知道好友的列表,也就是我们的好友的好友,自己的好友从user_friend 直接区,但是好友的好友就需要关联一次了。为了方便理解我这里带入一下自己,假设我的id 是1 ,user_id 就是我自己,friend_id 就是我的朋友,b_friend_id 就是我朋友的朋友。然后关联user_steps,获取自己的步数,好友的步数,好友的好友的步数,如果自己的步数大于好友的步数和好友的好友的步数,则占据该好友的封面。原创 2024-12-02 17:37:34 · 20779 阅读 · 0 评论 -
SQL面试题——抖音SQL面试题 共同问题—用户中两人一定认识的组合数
这个问题就是共同问题,和共同使用IP 一样,这里就是共同出现在同一家网吧而已。原创 2024-12-02 14:28:06 · 20579 阅读 · 0 评论 -
SQL面试题——抖音SQL面试题 共同问题—共同使用ip用户检测问题
这个需求本身不难,比较简单,主要在于各种去重上面。共同用户其实已经告诉我们要使用关联来解决了原创 2024-12-02 11:02:10 · 20888 阅读 · 0 评论 -
SQL面试题——抖音SQL面试题 最近一笔有效订单
我们可以使用last 函数限定取数的范围去实现一定条件的lag ,当然我们使用自关联是一定可以代替各种窗口函数的。原创 2024-12-01 21:57:32 · 20901 阅读 · 0 评论 -
SQL面试题——华为SQL面试题 日期交叉问题 合并日期重叠的活动
我们就用vivo 举例子,两个时间段 [ 2021-06-05 2021-06-15]和[ 2021-06-09 2021-06-21] ,可以看到[2021-06-09 2021-06-15] 这一段是交叉的,我们可不可以这样,让第二段的开始时间从2021-06-09 变成上一段的结束时间,2021-06-15,也就是两个活动的时间是[2021-06-05 2021-06-15] 和[2021-06-15 2021-06-21],此时的两段时间差是10和6,加起来正好是16。原创 2024-12-01 20:31:25 · 21163 阅读 · 0 评论 -
SQL面试题——抖音SQL面试题 股票波峰波谷
这个题目的难度比较低,我们是用lead 和 lag 两个函数就可以搞定,也就是在一个SQL 里面同时使用多个函数,问题的考查点在于对边界的考虑。原创 2024-12-01 10:59:58 · 20911 阅读 · 0 评论 -
SQL面试题——抖音SQL面试题 每分钟最大在线人数
每分钟最大在线人数的难点是让每一分钟都要有数据,这里首选需要生成时间数据,生成的数据有两种用法,一种是关联的方式,一种是合并的方式,看起来合并的方式更简单。原创 2024-11-30 23:15:41 · 20526 阅读 · 0 评论 -
SQL面试题——有序行转列
有序性行转列用到了一个技巧,就是我们可以拼接一个前缀,去参与排序,然后再将这个前缀给去掉,最后去掉前缀我们可以使用正则也可以使用map 相关的一些函数。原创 2024-11-29 13:33:53 · 20307 阅读 · 0 评论 -
SQL面试题——in和not in 不支持怎么办
其实SQL 本质上是集合之间的运算,所以只要我们理解了这个,其实各种不支持的我们都可以平行替代,这里的例子是in 和not in 不支持原创 2024-11-28 21:13:12 · 20190 阅读 · 0 评论 -
SQL面试题——复杂窗口定义
今日题目来自一个小伙伴的分享,其实是他来咨询应该怎么做,描述起来比较复杂,我们看看数据,当然数据是我模拟的vin 可以理解为车辆的id ,信息是一个车辆自动变道的过程,整个过程是先亮起转向灯,也就是indicator 字段,然后是开始上报准备变道的信号auto_change,也就是,表示激活了向左变道,没激活之前是AVL, lane 就是当前道路,变道激活后,具备变道条件后开始变道,lane 从1 变成0 表示变道完成,左边第一条道路是0,完成变道后关闭转向灯,然后停止上报激活信号。原创 2024-11-19 16:43:31 · 15439 阅读 · 0 评论 -
SQL面试题——跨窗口计算
跨窗口计算本质上我们是要使用lead 或者lag 函数,将上一个或者下一个窗口的数据放到当前窗口,只不过这里的情况简单一些获取的是其他窗口的明细数据,其实我们也可以获取其他窗口的汇总数据,都是同样的原理,可以参考前面的文章SQL面试题——交叉窗口计算。原创 2024-11-19 10:15:30 · 12493 阅读 · 0 评论 -
SQL面试题——交叉窗口计算
交叉窗口要想在一个窗口内计算出另外一个窗口的数据,最好的方式是落在当前窗口的关于交叉窗口的数据是计算的最终结果,而不是累加这样的数据。原创 2024-11-18 21:17:01 · 12576 阅读 · 0 评论 -
SQL面试题——飞猪SQL面试题 前百分之十的活跃用户
这个需求很简单,让我们计算出过去1个月内,前百分之十的活跃用户,活跃天数越多,排名越靠前。下面是我们的测试数据。这个题目不难,重点是要知道NTILE函数的使用。原创 2024-11-17 11:59:32 · 12096 阅读 · 0 评论 -
SQL面试题——持续增长问题
解决连续增长的问题的关键点在于构造标志先筛选出增长的数据,这个问题退化成最大连续登陆类型的问题,构造简单的标志即可同时构造出满足增长且连续的标志。原创 2024-11-16 11:23:51 · 11889 阅读 · 0 评论 -
SQL面试题——间隔连续问题
间隔连续最大登陆,最大连续登陆,连续出现次数,这些问题的解决思路都一样,都是构造连续标志。原创 2024-11-16 09:15:05 · 9624 阅读 · 0 评论 -
SQL面试题——抖音SQL面试题 最大在线用户数
其实这个问题很经典,而且解决方案只有这一个,其他的方案例如我们最开始的实现方案都是有问题的。原创 2024-11-15 17:27:06 · 9508 阅读 · 0 评论 -
SQL面试题——日期交叉问题 计算活动的总天数
这里的核心关键是处理当前活动的开始时间,用之前活动的最大结束时间去替代,理清楚了这个逻辑,实现很简单,可以参考接力赛的过程。如果上面的逻辑太复杂,我们可以借助集合的思想去实现。原创 2024-11-15 10:37:01 · 9066 阅读 · 0 评论 -
SQL面试题——蚂蚁SQL面试题 会话分组问题
如果T日上午连续点击几个页面后退出了网站,直到第二天的下午才再次进入网站,单单从时间线上来看,昨天退出的那条日志跟今天进入的那条日志是连在一起的,但这两条数据实际上并不是一个会话产生的,如果需要对这样的数据进行分组,将其分在两个不同的会话当中,应该怎么做呢?new_rn 的逻辑很简单如果diff>60 我们使用rn的值作为new_rn,否则是null ,rn=1 的除外,到这里我们的数据就成了上面这个样子,接下来很简单,就是用第一个不为null 的new_rn 填充下面是null 的rn。原创 2024-11-14 18:20:19 · 9072 阅读 · 0 评论
分享