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

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

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

题目:请你统计最大连续回答问题的天数大于等于3天的用户及其等级
最大连续天数问题,求解通用思路:
    是否连续例如1.11、1.12、1.12、1.13、1.15,序号(dense_rank)分别为1、2、2、3、4,日期数-序号分别为1.10、1.10、1.10、1.10、1.11,可知道日期数-序号相同则为连续的天数
1.按author_id、answer_date去重,然后排上序号
2.做差;按 做差得出的日期 分组 ,having count(*)>=3 筛选出连续日期大于等于3天的用户
3.连接author_tb表
select 
t2.author_id
,author_level
,days_cnt
from (
        select
        author_id
        ,count(*) days_cnt
        from (
            select 
            author_id
            ,answer_date
            ,dense_rank()over(partition by author_id order by answer_date) num ---序号
            from answer_tb
            group by author_id,answer_date ---去重
             ) t1
        group by author_id,date_add(answer_date,interval -num day)---做差,分组
        having count(*)>=3
     ) t2
join author_tb t3
on t2.author_id=t3.author_id
order by t2.author_id


全部评论
举的例子有问题,日期没去重,不过代码去重了,解题思路很清晰,爱了
点赞 回复 分享
发布于 2022-11-12 08:10 广东

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
评论
8
收藏
分享
牛客网
牛客企业服务