SQL面试真题--最大连续登录天数

SQL194 某乎问答最大连续回答问题天数大于等于3天的用户及其对应等应的等级
快手一面和民生Fintech笔试都考到了这个,这是逼迫我半年后再次刷起sql啊

with t as (
  select author_id,
  answer_date,
  dense_rank() over (PARTITION BY author_id order by answer_date) ranking
  from answer_tb
),
t1 as (
  select t.author_id,
  t.answer_date,
  DATE_SUB(answer_date,INTERVAL ranking DAY) as dt
  FROM t
),
continue_df as (
  select t1.author_id,
  count(distinct t1.answer_date) days_cnt  -- 可能存在同一天的多次登录,所以要count(distinct answer_date)
  from t1
  GROUP BY t1.author_id,t1.dt
  having days_cnt>=3
)

select 
  a.author_id,b.author_level,a.max_continue_days 
FROM (
  select author_id,max(days_cnt) as max_continue_days
  from continue_df
  group by author_id
)a
LEFT JOIN author_tb b
on a.author_id=b.author_id
order by a.author_id
;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值