—— 阿尔伯特·爱因斯坦

程序员の奇妙冒险

常用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
select
distinct a1.id, a1.name
from `Accounts` as a1
inner 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 b1
on a1.id = b1.id
where b1.cnt >= 5
order by a1.id
 
  • 求n次,那就将5改成你要你次数
评论(0)
暂无评论来抢沙发吧~