SQL面试题练习 —— 连续登录超过N天用户(一)

SQL面试题练习 —— 连续登录超过N天用户(一)

码农世界 2024-05-23 前端 69 次浏览 0个评论

题目

现有用户登录日志表 t_login_log,包含用户ID(user_id),登录日期(login_date)。数据已经按照用户日期去重,请查出连续登录超过4天的用户ID。

样例数据

样例输出

建表语句

CREATE TABLE t_login_log (
  user_id VARCHAR(255) COMMENT '用户ID',
  login_date DATE COMMENT '登录日期'
);
insert into t_login_log values
('0001','20220101'),
('0001','20220102'),
('0001','20220103'),
('0001','20220104'),
('0001','20220105'),
('0001','20220107'),
('0001','20220108'),
('0001','20220109'),
('0002','20220101'),
('0002','20220102'),
('0002','20220103'),
('0002','20220107'),
('0002','20220108'),
('0003','20220107'),
('0003','20220108'),
('0003','20220109');

题解

select
user_id
from 
(select
*,row_number() over(partition by user_id order by login_date) rn
from t_login_log)t
group by user_id,date_sub(login_date,interval rn day)
having count(*)>4;

转载请注明来自码农世界,本文标题:《SQL面试题练习 —— 连续登录超过N天用户(一)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,69人围观)参与讨论

还没有评论,来说两句吧...

Top