当前位置:网站首页>SQL查询连续三天登录的用户
SQL查询连续三天登录的用户
2022-06-11 03:16:00 【新鑫S】
思路:
1、因为每天用户登录次数可能不止一次,所以需要先将用户每天的登录日期去重。
2、再用row_number() over(partition by _ order by _)函数将用户id分组,按照登录日期进行排序。
3、计算登录日期减去第二步骤得到的结果值,用户连续登录情况下,相减的结果都相同。
4、按照id和日期分组并计数,筛选大于等于3的即为连续3天登录的用户。
我用的数据库是SQL Server 2014
建表语句:
create table user_login(
user_id int,
login_time datetime,
)
添加数据:
insert into user_login values (1,'2022-06-01 11:00:00.000');
insert into user_login values (1,'2022-06-01 12:00:00.000');
insert into user_login values (1,'2022-06-01 12:00:00.000');
insert into user_login values (1,'2022-06-02 11:00:00.000');
insert into user_login values (1,'2022-06-03 11:00:00.000');
insert into user_login values (2,'2022-06-01 11:00:00.000');
insert into user_login values (2,'2022-06-02 11:00:00.000');
insert into user_login values (2,'2022-06-04 11:00:00.000');
insert into user_login values (3,'2022-06-01 11:00:00.000');
insert into user_login values (3,'2022-06-02 11:00:00.000');
insert into user_login values (3,'2022-06-04 11:00:00.000');
insert into user_login values (3,'2022-06-05 11:00:00.000');
insert into user_login values (3,'2022-06-06 11:00:00.000');
insert into user_login values (3,'2022-06-07 11:00:00.000');
insert into user_login values (3,'2022-06-08 11:00:00.000');
查询语句
select
B.user_id
from
(
select
A.user_id,
A.login_date,
datediff (day,A.login_date,A.rn) AS inteval_days
from
(
select
user_id,
CONVERT(varchar(100), login_time, 23) login_date,
row_number() over (partition by user_id order by CONVERT(varchar(100), login_time, 23)) as rn
from
user_login
)A
)B
group by B.user_id,B.inteval_days
having count(1) >= 3;
查询结果

边栏推荐
- Fuluo classic source code Fuluo classic system development principle sharing
- 023 MySQL索引优化口诀-索引失效的常见情况
- What is the difference between a database unique index and a common index?
- Difference between idea open and import project
- PostgreSQL source code learning (XX) -- fault recovery ① - transaction log format
- WinDbg-虚拟机-双机调试-驱动文件的调试
- 2022 年 5 月产品大事记
- Stringutils string tool class used by FreeMarker to create templates
- js顶部图标菜单点击切换背景色js特效
- Discussion on the concurrency security of a common set on players
猜你喜欢
随机推荐
超算Disk quota exceed
Promise使用
HQChart实战教程55-欧易网K线面积图
Hough transform of image
iQOO 8实测上手体验:王者归来,从不高调
How to ensure reliable delivery of messages?
. Net module and assembly - NET Module vs Assembly
Pyqt5: button control
Gd32 can sends no mailbox fault
Minimum common ancestor of binary tree
C language pointer
Stringutils string tool class used by FreeMarker to create templates
B_QuRT_User_Guide(20)
{dataSource-1} closing ... {dataSource-1} closed
ThoughtWorks.QRCode功能齐全的生成器
Computer vision (AI) interview
Deep parsing of question mark expressions
Troubleshooting of single chip microcomputer communication data delay
canvas旋转绘图h5动画js特效
Mazhiqiang: research progress and application of speech recognition technology -- RTC dev Meetup









