程序员の奇妙冒险

返回
常用SQL笔记 MySQL
2025-04-08 23:51 阅读:51 评论:0

MySQL之活跃用户 连续出现n次

求n次,那就将5改成你要你次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
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)
暂无评论 来抢沙发吧~