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

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

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

select device_id
from (select device_id,timestampdiff(month,concat(lag(ym,1,0)over(partition by device_id order by ym),'-01'),concat(ym,'-01')) monthdiff
from (select device_id,date_format(event_date,'%Y-%m') ym,count(*) question_cnt
from question_practice_detail
group by device_id,ym
having question_cnt > 1) ym_table) rank_table
where monthdiff = 1
order by device_id desc;

1、构建表1:月练题次数大于1→获取‘年月’数据,聚类统计每位用户每个月的的练题数量,筛选出练题数量大于1的用户

2、构建表2:连续两月→利用窗口函数获取本月的上一行日期(按用户分组),计算当前行与前一行的时间差

3、选取:选取出月份差为1的用户

全部评论

相关推荐

脑袋锈住了:你这算啥,哥们中科院中强所硕士,本科211,叫我去干分拣,时薪20
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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