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 

请自行观察结果

相关推荐
知其然亦知其所以然几秒前
SpringAI 玩转 OCI GenAI:这次我们聊聊 Cohere 聊天模型
java·后端·spring
亭台烟雨中3 分钟前
SQL优化简单思路
数据库·sql
金銀銅鐵5 分钟前
[Java] 观察 CompactStrings 选项的影响
java·后端
是2的10次方啊5 分钟前
🎯 HashMap源码深度解析:从"图书馆"到"智能仓库"的进化史
java
paopaokaka_luck9 分钟前
绿色环保活动平台(AI问答、WebSocket即时通讯、协同过滤算法、Echarts图形化分析)
java·网络·vue.js·spring boot·websocket·网络协议·架构
玉衡子12 分钟前
四、索引优化实战
java·后端
在路上`21 分钟前
前端学习之后端java小白(二)-sql约束/建表
java·sql·学习
我真的是大笨蛋24 分钟前
JVM 四大晋升机制
java·jvm
木心爱编程32 分钟前
C++20多线程新特性:更安全高效的并发编程
java·jvm·c++20
ljf883832 分钟前
Java导出复杂excel,自定义excel导出
java·开发语言·excel