题目如图:
环境:mysql 数据库
建表:
CREATE TABLE `T1` (
`userID` int(11) NOT NULL,
`monthID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
全部记录:
SELECT * FROM T1;
10002 2
10003 2
10002 3
10001 2
10001 3
10001 4
10004 5
10005 6
10005 11
10005 12
10006 1
10006 2
10006 3
10006 4
10007 6
10007 8
梳理分析过程 :
连续两个月活跃的用户,以下情况都属于连续2个月活跃:
4 5 6
4 5 7
4 5 7 8
4 5 7 8 9
规律就是 a.monthid=(b.monthid+1)
-- 连续两个月活跃的用户
select distinct(a.userid) from t1 a
join t1 b
on a.userid=b.userid and a.monthid=(b.monthid+1);
-- 结果
10002
10001
10005
10006
-- 连续三个月活跃的用户
select distinct(a.userid) from t1 a
join t1 b
on a.userid=b.userid and a.monthid=(b.monthid+1)
join t1 c
on a.userid=c.userid and a.monthid=(c.monthid+2);
-- 结果
10001
10006