题解 | 任意两个连续自然月练题次数大于1的用户

任意两个连续自然月练题次数大于1的用户

https://www.nowcoder.com/practice/a4cea6942a4f4354b0a0181aa5f446d2

### 逻辑 先求出用户的答题次数 再将当月表跟次月表相连接 最后再筛选

WITH
    monthly_practice AS(
        SELECT 
            device_id,
            YEAR(event_date) year,
            MONTH(event_date) month,
            COUNT(question_id) practice_cnt
        FROM question_practice_detail
        GROUP BY YEAR(event_date),MONTH(event_date),device_id
    ),
    consecutive_month AS(
        SELECT
            t1.device_id,
            t1.practice_cnt,
            t2.practice_cnt practice_cnt2 
        FROM monthly_practice t1
        LEFT JOIN monthly_practice t2
        ON t1.device_id = t2.device_id
        WHERE (t1.year = t2.year AND t1.month+1 = t2.month)
        OR (t1.year+1 = t2.year AND t1.month=12 AND t2.month=1)
    )

SELECT DISTINCT device_id
FROM consecutive_month
WHERE practice_cnt+practice_cnt2 >1
order by device_id DESC



全部评论

相关推荐

05-07 13:29
已编辑
门头沟学院 Java
北斗导航Compass低仿版:能不能先搞清楚优先级啊,怎么可能是项目问题,项目很重要吗?又没学历 又没实习大厂凭啥约面?那玩具项目 没应用在真实生产环境下的 就算做上天又有什么用?早点找个小公司实习 拿小公司实习去投大厂实习,这才是你现在该做的
投递美团等公司10个岗位 简历被挂麻了,求建议
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务