题解 | 任意两个连续自然月练题次数大于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



全部评论

相关推荐

见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务