拼多多一面SQL之用户行为路径分析

推荐阅读文章列表

大数据开发面经汇总【持续更新...】

我的大数据学习之路

大数据开发面试笔记V6.0

SQL题目

来自拼多多数据研发一面

  • 有一张用户行为日志表ods_usr_log, 包含用户id(user_id)和页面id(page_id)以及进入页面时间(in_ts)
  • 问题:统计每天进入A页面后,立刻进入B页面,又进入C页面的用户数【注意:进入C页面之前可能进入过其他页面】

答案解析

模拟数据

insert into ods_usr_log(user_id, page_id, in_ts) values 
(1, 'A', '2020-1-1 12:01:03'),
(2, 'A', '2020-1-1 12:01:04'),
(3, 'A', '2020-1-1 12:01:05'),
(1, 'B', '2020-1-1 12:03:03'),
(1, 'A', '2020-1-1 12:04:03'),
(1, 'C', '2020-1-1 12:06:03'),
(1, 'D', '2020-1-1 12:11:03'),
(2, 'A', '2020-1-1 12:07:04'),
(3, 'C', '2020-1-1 12:02:05'),
(2, 'C', '2020-1-1 12:09:03'),
(2, 'A', '2020-1-1 12:10:03'),
(4, 'A', '2020-1-1 12:01:03'),
(4, 'C', '2020-1-1 12:11:05'),
(4, 'D', '2020-1-1 12:15:05'),
(1, 'A', '2020-1-2 12:01:03'),
(2, 'A', '2020-1-2 12:01:04'),
(3, 'A', '2020-1-2 12:01:05'),
(1, 'B', '2020-1-2 12:03:03'),
(1, 'A', '2020-1-2 12:04:03'),
(1, 'C', '2020-1-2 12:06:03'),
(2, 'A', '2020-1-2 12:07:04'),
(3, 'B', '2020-1-2 12:08:05'),
(3, 'E', '2020-1-2 12:09:05'),
(3, 'D', '2020-1-2 12:11:05'),
(2, 'C', '2020-1-2 12:09:03'),
(4, 'E', '2020-1-2 12:05:03'),
(4, 'B', '2020-1-2 12:06:03'),
(4, 'E', '2020-1-2 12:07:03'),
(2, 'A', '2020-1-2 12:10:03');

alt

思路分析

  • 需求拆解如下:
    • 要想求按照 A->B->C 序列的用户,就需要知道每个用户的行为路径
    • 这个不难求得,只需要将每个用户进入的页面按照进入时间进行concat即可
    • 那么如何保证A到B是直接到达的,并且B到C是可能间接到达的呢?
    • 显然可以使用正则匹配 like %A,B%C%

具体代码

select date(in_ts) as dt
      ,count(distinct user_id) as cnt
from
(
    select user_id
          ,in_ts
          ,concat_ws(',',collect_set(page_id) over(partition by user_id order by in_ts)) as page_list
    from ods_usr_log
) t
where page_list like '%A,B%C%'
group by date(in_ts)
;
#数据人的面试交流地##校招过来人的经验分享#
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-08 10:39
上周一,mentor 直接把我拉到会议室里边,给我说今天的团建我就不参与了。还没有来得及问缘由,mentor 就说,因为没有实习生的预算。最招的是下午有个那种六一下午茶活动,就有各种点心零食什么的,我本人嗓子不舒服(是真不舒服就没去)然后mentor又回来给我说晚上团建让我去,说领导特意申请了,让我千万得去。我此时内心:哎不行你来我家吃饭呗?我这吃饭不用走审批,多双筷子的事。团建大概三十多人。同时在会议室告诉我,就是不要再进行什么创新,老实回归于业务。(Ps一句招的岗位是 AI+测试。)实则进来全是点点点,因为我之前有相关的实习经验,然后landing了两天,直接就开始接手业务了。其实没有太大的波动。因为我觉得都是在情理之中。然后最绷不住的来了。mentor又说我的leader让我不要待在组里群里边。说群里发周报什么的怕我看到。我说实话,上过班的都知道,这玩意就是糊弄鬼的,你求着我看我都不想看。我当时真的感觉一下子就被推到边缘了。,和我前一家公司不一样的是,它这里边所有的实习生都是写的外包人员。。从一开始也没有什么工牌之类的。这家公司并不小。上个周五提离职,mentor 还以为觉得是我每天做 dirty work 受不了。感觉他已经猜到我要提离职了的,而且是很早就猜到了。我也没有过多解释,留下了一句,与个人职业生涯规划不符,就走了。从入职到现在,总共是第三个星期。上周五走出公司的那一刻,我真的觉得前所未有的轻松。ps一句周四的时候也是通过另外一家公司的三面,世上自有留人处。
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
9
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务