巨人网络\春招\数据开发\笔试\hard

巨人网络\春招\数据开发\笔试\hard
数仓-SQL面试题-实录

字段:uid 用户ID、artical_id 文章ID、in_time 进入时间、out_time 离开时间、sign_cin 是否签到

问题:统计每天的日活数及新用户占比

注:
新用户占比 = 当天的新用户数/当天活跃用户数(日活数)
如果in_time 进入时间 和 out_time 离开世界跨天了,在跨天的每天都记为该用户活跃过
新用户占比保留2位小数,结果按日期升序排序

示例数据的输出结果如下
dt       dau uv_new_ratio
2021-10-31 2 1.00
2021-11-01 3 0.33
2021-11-02 3 0.67
2021-11-03 5 0.40

解释
2021年10月31日有2个用户活跃,都为新用户,新用户占比1.00
2021年11月1日有3个用户活跃,其中1个为新用户,新用户占比0.33

因原始数据超出限制,可以找我要
#春招##大数据##实习#
全部评论
SELECT dt, cnt AS dau, ROUND(COUNT(IF(dt = min_dt, 1, NULL)) OVER (PARTITION BY uid) / cnt, 2) AS uv_new_ratio FROM (SELECT dt, uid, COUNT(uid) OVER (PARTITION BY dt) AS cnt, MIN(dt) OVER (PARTITION BY uid) AS min_dt FROM (SELECT uid, in_time AS dt FROM t UNION SELECT uid, out_time AS dt FROM t) t1 ) t2 order by dt asc ; 这样应该可行;
1 回复
分享
发布于 04-13 18:44 重庆
需要投递数据开发的小伙伴联系我哦,高途集团
1 回复
分享
发布于 04-14 16:20 北京
滴滴
校招火热招聘中
官网直投
这题感觉牛客有,我是用的窗口函数做的。小白浅写,请大佬多多批评指教。 with tiaojian as ( select uid,in_time as pday from 实录表 union all select uid,out_time as pday from 实录表 ) select t.pday, sum(case when t.m=1 then 1 else 0 end), round( sum(case when t.m=1 then 1 else 0 end)/count(distinct t.uid),2) from( select uid, pday, row_number()over(partition by uid order by pday asc) as m from tiaojian ) as t group by t.pday
点赞 回复
分享
发布于 04-15 17:54 北京

相关推荐

投递巨人网络等公司7个岗位 >
点赞 评论 收藏
转发
想问一下,巨人线下面试走完一面二面hr面,多久出结果,4.20号面的,五一过后吗?Ps:一面面试官人很和蔼,坐在他旁边,会引导问问题,不过问的很奇怪,因为我简历很奇怪(他说不问网络,那是社招的,然后问我排序算法有哪些,选了几个让我考虑实际应用需要考虑的纬度,还有堆栈什么的),然后我就放飞自我了(死马活马一起医),正常的回答完毕,又答了一些好笑的回答,我们两个都笑了,最后问我擅长什么,我说给你讲讲网络同步实现吧,然后我给面试官倒了一大堆垃圾二面面试官比较严肃,我就老老实实坐在对面等待宣判,开始让我画mvc的uml图,有惊无险过去了,谈到gameplay框架,谈到网络同步,谈到材质纹理uv区别,谈到ue的standalone是啥(我说这玩意两人对战你理解成拳皇,两个Controller控制两个pawn,就是单机游戏),最后问我喜欢的游戏,我说dota1,和老古董一起玩,面试官笑了Hr面,问手上offer,问我课题组情况(机械的,计算机学的多吗,我说我们课题组找工作就是往计算机跑,我来我们专业(教德语的)是想多学门外语,顺便转行计算机),聊着聊着又把他逗笑了,hr然后说一周出结果结果会有offer吗没有也不要紧,有一家保底收留我了,而且巨人面试把三个人都整笑了,我也蛮开心了,毕竟工作以后机会多嘛,沉淀沉淀,来日相见
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务