00 写在前面
不过不用怕,数据分析面试笔试的大厂真题解析系列来了!收集了近几年一些大厂的面试笔试题题,通过这些题目的详细讲解,掌握这类题目的解答思路了,授人以鱼不如授人以渔!

01 大厂笔试题解析
01 题目描述
【题目描述】
计算用户在直播间的最大连续登录天数。用户登录天数的连续性允许间隔不超过2天,如用户分别在1、3、5、6号进行登录,则用户的最大连续登录天数为6天。
表结构如下:DROP TABLE IF EXISTS test_login_events; CREATE EXTERNAL TABLE IF NOT EXISTS test_login_events ( user_id INT COMMENT '用户id', login_datetime STRING COMMENT '登录时间' ) COMMENT '直播间访问记录' STORED AS ORC TBLPROPERTIES ( "orc.compress" = "SNAPPY", "discover.partitions" = "false" );
02 解题步骤
第一步:去重处理,获取用户每天的首次登录数据。
WITH temp1 AS ( SELECT user_id, login_datetime, date_format(login_datetime, 'yyyy-MM-dd') AS login_date FROM test_login_events)
第二步:为每个用户每天的登录记录按时间排序,取每天的第一条登录记录。
, temp2 AS ( SELECT user_id, login_datetime, login_date, row_number() over (partition by user_id, login_date order by login_datetime) AS rn FROM temp1)
第三步:过滤出每天的首次登录记录,去重用户的重复登录。
, temp3 AS ( SELECT user_id, login_datetime, login_date FROM temp2 WHERE rn = 1)
第四步:计算每条登录记录与前一条登录记录之间的时间间隔(单位:天)。
, temp4 AS ( SELECT user_id, login_datetime, login_date, lag(login_date) over (partition by user_id order by login_date) as last_login_date, datediff(login_date, lag(login_date) over (partition by user_id order by login_date)) as login_diff FROM temp3)
第五步:根据时间间隔设置标记(login_session_flag),如果时间间隔大于2天,则标记为1,否则为0。
, temp5 AS ( SELECT user_id, login_datetime, login_date, last_login_date, login_diff, if(login_diff > 2, 1, 0) as login_session_flag FROM temp4)
第六步:根据标记值计算用户每个登录周期的session_id,用于标识连续登录的周期。
, temp6 AS ( SELECT user_id, login_datetime, login_date, last_login_date, login_diff, login_session_flag, concat(user_id, '_', sum(login_session_flag) over (partition by user_id order by login_datetime)) as session_id FROM temp5
)
第七步:计算每个session_id下的连续登录天数(最大日期与最小日期的差值 + 1)。
, temp7 AS ( SELECT user_id, session_id, datediff(max(login_date), min(login_date)) + 1 as max_days FROM temp6 GROUP BY user_id, session_id
)
第八步:汇总每个用户的最大连续登录天数。
SELECT user_id, max(max_days) as max_daysFROM temp7GROUP BY user_id;
完整SQL代码可以扫码进入下方【数分求职圈】查看↓
02 字节面试全流程




数分求职圈 vs 简历面试服务
更多的大厂面试笔试真题,我新建了一个数分求职的圈子,专注分享大厂数分面试、笔试真题、面经和求职信息,秋招季优惠价,需要的小伙伴可以扫描下方二维码购买,一站式准备面试笔试,用大厂真题降维打击斩获offer!
更多【数据分析思维】、【数据分析工具】、【数据分析面试笔试】、【数据分析统计学】等系列干货内容请回翻公众号,更多数据分析干货文章持续更新中,敬请期待,如果觉得不错,也欢迎分享、点赞和点在看哈~
往期精选
end

