SQL-01求连续七天登陆的用户

连续七天登录

数据准备

java 复制代码
CREATE TABLE `user_login` (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int DEFAULT NULL,
  `login_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

#插入数据
INSERT INTO study.user_login (user_id,login_date) VALUES 
(100,'2023-10-01 00:00:00.0')
,(100,'2023-10-02 00:00:00.0')
,(100,'2023-10-03 00:00:00.0')
,(100,'2023-10-04 00:00:00.0')
,(100,'2023-10-05 00:00:00.0')
,(100,'2023-10-06 00:00:00.0')
,(100,'2023-10-07 00:00:00.0')
,(100,'2023-10-07 00:00:00.0')
,(200,'2023-10-20 00:00:00.0')
,(200,'2023-10-22 00:00:00.0')
;
INSERT INTO study.user_login (user_id,login_date) VALUES 
(200,'2023-10-23 00:00:00.0')
;

SQL

sql 复制代码
select 
	log_date,
	user_id from 
(
	select 
		*,
		date_sub(log_date,interval rank_num day) real_date
	from 
		(
				select 
					*,
					row_number() over (partition by user_id order by log_date ) as rank_num
				from  
				(
					select 
						distinct date(login_date) as log_date ,user_id
					from study.user_login 
				 ) a
		) b
) c
group by real_date, user_id HAVING COUNT(*) >=7 

请自行观察结果

相关推荐
重生之小比特几秒前
【MySQL 数据库】内外连接
数据库·mysql
大大杰哥几秒前
Java集合框架(List/Set/Queue)核心总结与代码示例
java·数据结构
深蓝轨迹2 分钟前
RedisTemplate 核心操作API汇总(Spring Data Redis)
java·redis·spring
得一录2 分钟前
TradingAgents金融股票分析的最小实现
开发语言·数据库·人工智能·python
刘~浪地球5 分钟前
MongoDB安全与权限:企业级数据保护
数据库·安全·mongodb
阿正呀6 分钟前
C#怎么清空Dictionary字典_C#如何管理内存集合【基础】
jvm·数据库·python
Cat_Rocky8 分钟前
K8s RBAC认证 简单讲
java·docker·kubernetes
2401_846339569 分钟前
html标签如何表示计量值_meter标签使用条件【方法】
jvm·数据库·python
一只IT攻城狮9 分钟前
️ Spring Boot 文件上传,防御恶意文件攻击
java·spring boot·web安全