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 

请自行观察结果

相关推荐
天殇凉30 分钟前
AC自动机学习笔记
java·笔记·学习
TechTrek41 分钟前
Spring Boot 4.0正式发布了
java·spring boot·后端·spring boot 4.0
飞梦工作室1 小时前
企业级 Spring Boot 邮件系统开发指南:从基础到高可用架构设计
java·spring boot·后端
haiyu柠檬1 小时前
在Spring Boot中实现Azure的SSO+VUE3前端配置
java·spring boot·后端
百***81272 小时前
【SpringBoot】SpringBoot中分页插件(PageHelper)的使用
java·spring boot·后端
百***86462 小时前
SpringBoot中自定义Starter
java·spring boot·后端
q***07142 小时前
VScode 开发 Springboot 程序
java·spring boot·后端
q***46522 小时前
Spring中使用Async进行异步功能开发实战-以大文件上传为例
java·后端·spring
q***38512 小时前
SpringCloud实战【九】 SpringCloud服务间调用
java·spring boot·spring cloud
岚天start2 小时前
K8S环境中Containerd运行时占用文件定位清理
java·rpc·kubernetes