常用SQL笔记MySQL
2025-04-08 23:51阅读:29评论:0
MySQL之活跃用户 连续出现n次
求n次,那就将5改成你要你次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Logins table:+---------+------------+| user_id | login_date |+---------+------------+| 1 | 2019-07-20 || 1 | 2019-07-20 || 1 | 2019-07-20 || 2 | 2019-07-20 || 2 | 2019-07-21 || 2 | 2019-07-21 || 3 | 2019-07-21 || 3 | 2019-07-21 || 3 | 2019-07-21 || 4 | 2019-06-25 || 4 | 2019-06-25 |+---------+------------+ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
selectdistinct a1.id, a1.namefrom `Accounts` as a1inner join ( select id, @cnt:=if(@id=id and @pre_date=date_sub(login_date, interval 1 day), @cnt+1, 1) as cnt, @id:=id, @pre_date:=login_date from (select * from `Logins` group by id, login_date order by id, login_date) as a, (select @id:=null, @pre_date:=null, @cnt:=0) as b) as b1on a1.id = b1.idwhere b1.cnt >= 5order by a1.id - 求n次,那就将5改成你要你次数