
计算用户连续登录天数,核心是识别“日期是否连续”——用当前日期减去按用户分组、按日期排序后的行号,相同结果即为同一连续段。
真实日志中常存在同天多次登录、时间戳带时分秒等问题,需先清洗:
对每个用户按登录日期升序排列,生成行号(row_number)。连续日期的特征是:日期递增,行号也递增 → 二者差值恒定。
例如:2024-01-01、02、03 → 行号为1、2、3 → 差值均为 2024-01-01 → 这个固定差值就是该连续段的“锚点”。
SQL写法示例:
SELECT user_id, login_date,基于上一步的 group_tag,按 user_id 和 group_tag 分组,即可聚合出每一段连续登录的信息:
在上一结果基础上加 HAVING 或子查询过滤即可。注意不是“某天起连登7天”,而是存在任意一段 ≥7 天的连续记录:
以上就是SQL计算连续登录天数_窗口函数实战案例【教学】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号