[SQL智慧航行者] - 连续登录

话不多说, 先看数据表信息.

数据表信息:

数据表如图:

有用户表行为记录表t_act_records表,包含两个字段:uid(用户ID),imp_date(日期)

话不多说, 再看需求~

需求:

编写一个 sql 查询,计算2021年每个月,每个用户连续登录的最多天数?

sql 复制代码
select 
    uid, 
    date_format(imp_date, '%y-%m') as month,
    max(consecutive_days) as max_consecutive_days
from (
    select 
        uid,
        imp_date,
        row_number() over (partition by uid, date_format(imp_date, '%y-%m') order by imp_date) -
        row_number() over (partition by uid, date_format(imp_date, '%y-%m') order by imp_date) as consecutive_days
    from t_act_records
    where year(imp_date) = 2021
) as subquery
group by uid, month;

编写一个 sql 查询,计算2021年每个月,连续2天都有登录的用户名单?

sql 复制代码
select distinct uid, date_format(imp_date, '%y-%m') as month
from t_act_records
where year(imp_date) = 2021
group by uid, date_format(imp_date, '%y-%m')
having count(distinct imp_date) >= 2;

编写一个 sql 查询,计算2021年每个月,连续5天都有登录的用户数?

sql 复制代码
select
    date_format(imp_date, '%y-%m') as month,
    count(distinct uid) as user_count
from (
    select
        uid,
        imp_date,
        row_number() over (partition by uid, date_format(imp_date, '%y-%m') order by imp_date) -
        row_number() over (partition by uid, date_format(imp_date, '%y-%m') order by imp_date) as consecutive_days
    from t_act_records
    where year(imp_date) = 2021
) as subquery
where consecutive_days <= 5
group by month;

最后给大家介绍一下我这边的创建数据表和插入数据的操作步骤, 想要自己测试的话, 可以参考:

sql 复制代码
DROP TABLE if EXISTS t_act_records;
CREATE TABLE t_act_records
(uid  VARCHAR(20),
imp_date DATE);

INSERT INTO t_act_records VALUES('u1001', 20210101);
INSERT INTO t_act_records VALUES('u1002', 20210101);
INSERT INTO t_act_records VALUES('u1003', 20210101);
INSERT INTO t_act_records VALUES('u1003', 20210102);
INSERT INTO t_act_records VALUES('u1004', 20210101);
INSERT INTO t_act_records VALUES('u1004', 20210102);
INSERT INTO t_act_records VALUES('u1004', 20210103);
INSERT INTO t_act_records VALUES('u1004', 20210104);
INSERT INTO t_act_records VALUES('u1004', 20210105);
相关推荐
云草桑6 小时前
DBA mssql 解决排序规则冲突 QA prod 和开发配置都是一样的服务器排序规则 为啥开发环境的的存储过程需要 加这个COLLATE Chinese_PRC_CI_AS
数据库·dba·mssql
卤炖阑尾炎6 小时前
MySQL 故障排查与生产环境优化实战指南
数据库·mysql
小陈工6 小时前
2026年4月2日技术资讯洞察:数据库融合革命、端侧AI突破与脑机接口产业化
开发语言·前端·数据库·人工智能·python·安全
Arvin6276 小时前
Nginx 添加账号密码访问验证
运维·服务器·nginx
solihawk6 小时前
分区大表统计信息不准确引发的性能问题
数据库
一叶飘零_sweeeet7 小时前
击穿 MySQL InnoDB MVCC 底层:从 undo log、Read View 到隔离级别的全链路深度拆解
mysql·innodb·mvcc
百结2147 小时前
postgresql日常运用
数据库·postgresql·oracle
前进的李工7 小时前
MySQL大小写规则与存储引擎详解
开发语言·数据库·sql·mysql·存储引擎
CoovallyAIHub8 小时前
Sensors 2026 | 从无人机拍摄到跑道缺陷地图,机场巡检全流程自动化——Zadar机场全跑道验证
数据库·架构·github
内心的一片海8 小时前
服务器内存异常占用
运维·服务器