题解 | 任意两个连续自然月练题次数大于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的用户
查看23道真题和解析
