题解 | #某乎问答最大连续回答问题天数大于等于3天的用户及其对应等级#
某乎问答最大连续回答问题天数大于等于3天的用户及其对应等级
http://www.nowcoder.com/practice/e080f8a685bc4af3b47749ca3310f1fd
首先我们要了解如何去判断连续天数,如果是连续的日期,那么日期-日期对应的行数,所求出的日期是一样的值,基于这个可以找出
连续3天回答问题的用户,
select answer_date,author_id, dense_rank()over(partition by author_id order by answer_date) as cnt from answer_tb group by answer_date,author_id然后将其与问答创作者信息表author_tb连接即可,完整代码如下
select t2.author_id,author_level,t2.day_cnt from (select author_id,count(*) day_cnt from (select answer_date,author_id, dense_rank()over(partition by author_id order by answer_date) as cnt from answer_tb group by answer_date,author_id ) t1 group by author_id,date_sub(answer_date,interval cnt day) having count(*)>=3 ) t2 join author_tb on t2.author_id=author_tb.author_id order by t2.author_id;