快手面试的一道hql题目

如图所示,如何从table1到table3呢?面试的时候不会写,希望有大佬可以解答
#快手##笔试题目#
全部评论
select     user_id,     active_dt,     if(count = 3,rank,1) active_days from (     select         user_id,active_dt,rank,         count(*)over(partition by user_id,sub_date) count     from         (             select                 user_id,active_dt,rank,                 (cast(active_dt as bigint) - rank) sub_date             from                 (select user_id,active_dt,                         rank() over (partition by user_id order by active_dt) rank                  from table1) t1         ) t2 ) t3
1 回复 分享
发布于 2020-06-22 22:44
select user_id,dt,row_number() over (partition by user_id ,rt order by active_dt ) as result from (     select user_id,dt,row_number() over (partition by user_id order by active_dt ) as rnt, cast(active_dt  as int)-row_number() over (partition by user_id order by active_dt ) as rt     from table1 ) a
1 回复 分享
发布于 2020-07-03 14:56
第一感觉窗口函数可以做 就是麻烦些,要好几步。简单的要想一想
点赞 回复 分享
发布于 2020-04-23 16:25
窗口函数增加新的排序一列 之后case when  select a.user_id,a.active_dt,a.active_days from (select *,  (case when active_day<=3 then active_day  else 1 end)active_days from( select  user_id, active_dt, row_number() over (partition by user_id order by active_dt )as active_day from table1) t)a ;
点赞 回复 分享
发布于 2020-05-02 15:08
个人感觉这道题应该表达的是:连续三日活跃的,以1/2/3这样标出来。如果间断了活跃,就重新从1计数。
点赞 回复 分享
发布于 2020-05-30 09:46
select user_id, active_at, row_number()over(partition by t1 order by active_at) from (select user_id, active_at, date_sub(activer_at,row_number()over(partition by user_id order by active_at)) as t1, count(1) from table1 group by user_id, active_at, date_sub(activer_at,row_number()over(partition by user_id order by active_at)) )
点赞 回复 分享
发布于 2023-12-28 09:42 北京
SELECT user_id, active_dt, row_number() OVER(PARTITION BY active_days ORDER BY active_dt) active_days FROM ( SELECT user_id, active_dt,TO_DATE(active_dt,'YYYYMMDD') - row_number() OVER(order by active_dt) active_days FROM table1 )
点赞 回复 分享
发布于 03-26 10:44 广东

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
评论
2
6
分享
牛客网
牛客企业服务