题解 | #某乎问答最大连续回答问题天数大于等于3天的用户及其对应等级#

某乎问答最大连续回答问题天数大于等于3天的用户及其对应等级

http://www.nowcoder.com/practice/e080f8a685bc4af3b47749ca3310f1fd

解题思路: 反向推导, 正向执行

反向推导

  1. 获取最大连续回答问题天数不小于3天的用户及其对应等级, 需要计算每个用户连续回答问题的天数
  2. 计算每个用户连续回答问题的天数, 需要定位用户连续回答问题的日期, 再进行统计

正向执行

  1. 定位每个用户连续回答问题的日期, 可以依据连续回答问题的日期差为1, 以用户为单位, 按照时间排序, 通过当天日期和排序的差, 求得一个连续问答问题的参照日期(连续回答问题日期的前一天)
  2. 以用户和参照日期为单位, 统计连续回答问题的天数
  3. 计算每位用户最大连续回答问题天数, 并筛选不小于3天的用户即可
    select author_id,
           author_level,
           max(days) as days_cnt
      from (
            select author_id,
                   count(*) over (partition by author_id, tp_dt) as days
              from (
                    select distinct 
                           author_id,
                           answer_date,
                           date_sub(answer_date, interval dense_rank() over (partition by author_id order by answer_date) day) as tp_dt
                      from answer_tb
              ) as a 
      ) as b 
      join author_tb using(author_id)
  group by author_id,
           author_level 
    having days_cnt >= 3
  order by author_id
全部评论

相关推荐

ps:最寄的一集
投递拼多多等公司10个岗位 >
点赞 评论 收藏
转发
2 收藏 评论
分享
牛客网
牛客企业服务