快手面试的一道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 )
点赞 回复 分享
发布于 2024-03-26 10:44 广东

相关推荐

02-22 20:28
重庆大学 Java
程序员牛肉:首先不要焦虑,你肯定是有希望的。 首先我觉得你得好好想一想自己想要什么。找不到开发岗就一定是失败的吗?那开发岗的35岁危机怎么说?因此无论是找工作还是考公我觉得你都需要慎重的想一想。但你一定要避开这样一个误区:“我是因为找不到工作所以不得不选择考公”。 千万不要这么想。你这个学历挺好的了,因此你投后端岗肯定是有面试机会的。有多少人简历写的再牛逼,直接连机筛简历都过不去有啥用?因此你先保持自信一点。 以你现在的水平的话,其实如果想要找到暑期实习就两个月:一个月做项目+深挖,并且不断的背八股。只要自己辛苦一点,五月份之前肯定是可以找到暑期实习的,你有点太过于高看大家之间的技术差距了。不要焦虑不要焦虑。 除此之外说回你这个简历内容的话,基本可以全丢了。如果想做后端,先踏踏实实做两个项目再说+背八股再说。如果想考公,那就直接备战考公。 但是但是就像我前面说的:你考公的理由可以是因为想追求稳定,想追求轻松。但唯独不能是因为觉得自己找不到工作。不能这么小瞧自己和自己的学历。
点赞 评论 收藏
分享
不放弃的小鱼干很洒脱:好可爱的离职理由
点赞 评论 收藏
分享
评论
2
7
分享

创作者周榜

更多
牛客网
牛客企业服务