当前位置: 首页 > news >正文

力扣1747-应该被禁止的Leetflex帐户

表:LogInfo

+-------------+----------+ | Column Name | Type | +-------------+----------+ | account_id | int | | ip_address | int | | login | datetime | | logout | datetime | +-------------+----------+ 该表可能包含重复项。 该表包含有关Leetflex帐户的登录和注销日期的信息。 它还包含了该账户用于登录和注销的网络地址的信息。 题目确保每一个注销时间都在登录时间之后。

编写解决方案,查找那些应该被禁止的Leetflex帐户编号account_id。 如果某个帐户在某一时刻从两个不同的网络地址登录了,则这个帐户应该被禁止。

可以以任何顺序返回结果。

查询结果格式如下例所示。

示例 1:

输入:LogInfo table: +------------+------------+---------------------+---------------------+ | account_id | ip_address | login | logout | +------------+------------+---------------------+---------------------+ | 1 | 1 | 2021-02-01 09:00:00 | 2021-02-01 09:30:00 | | 1 | 2 | 2021-02-01 08:00:00 | 2021-02-01 11:30:00 | | 2 | 6 | 2021-02-01 20:30:00 | 2021-02-01 22:00:00 | | 2 | 7 | 2021-02-02 20:30:00 | 2021-02-02 22:00:00 | | 3 | 9 | 2021-02-01 16:00:00 | 2021-02-01 16:59:59 | | 3 | 13 | 2021-02-01 17:00:00 | 2021-02-01 17:59:59 | | 4 | 10 | 2021-02-01 16:00:00 | 2021-02-01 17:00:00 | | 4 | 11 | 2021-02-01 17:00:00 | 2021-02-01 17:59:59 | +------------+------------+---------------------+---------------------+输出:+------------+ | account_id | +------------+ | 1 | | 4 | +------------+解释:Account ID 1 --> 该账户从 "2021-02-01 09:00:00" 到 "2021-02-01 09:30:00" 在两个不同的网络地址(1 and 2)上激活了。它应该被禁止. Account ID 2 --> 该账户在两个不同的网络地址 (6, 7) 激活了,但在不同的时间上. Account ID 3 --> 该账户在两个不同的网络地址 (9, 13) 激活了,虽然是同一天,但时间上没有交集. Account ID 4 --> 该账户从 "2021-02-01 17:00:00" 到 "2021-02-01 17:00:00" 在两个不同的网络地址 (10 and 11)上激活了。它应该被禁止.

思路:

1、使用同一张日志表进行自连接
题目需要判断同一个账号是否在不同 IP 地址下存在登录时间重叠的情况,因此对登录日志表进行自连接,将其分别作为两份数据进行比较。

2、限定为同一账号的登录记录
在自连接条件中,首先要求两条日志记录属于同一个账号,这样才能判断该账号在不同时间段、不同 IP 下的登录行为是否存在冲突。

3、筛选不同 IP 地址的登录行为
通过比较两条日志记录的 IP 地址,排除同一 IP 的情况,只保留在不同 IP 地址下发生的登录记录,以满足题目对异常登录的判定要求。

4、判断登录时间是否存在重叠
通过比较两次登录的登录时间和登出时间,判断两个时间区间是否存在交集。如果一条记录的登出时间晚于或等于另一条记录的登录时间,且另一条记录的登录时间早于或等于前一条记录的登出时间,则说明登录时间发生了重叠。

5、去重并输出账号结果
最后只返回满足上述条件的账号编号,并通过去重处理,确保每个账号在结果中只出现一次。

代码:

select distinct a.account_id as account_id from LogInfo a, LogInfo b where a.account_id = b.account_id and a.ip_address != b.ip_address and a.logout <= b.logout and b.login <= a.logout
http://www.jsqmd.com/news/97169/

相关文章:

  • OpenModScan终极指南:5大核心功能打造专业Modbus测试平台
  • 使用Kotaemon和Docker镜像源加速本地部署
  • SENAITE LIMS:实验室信息管理系统完整安装配置指南
  • OpenModScan:工业通讯调试的终极武器深度解析
  • RhinoPython脚本终极指南:3D建模自动化的简单入门
  • 李跳跳自定义规则深度解析:打造纯净手机使用体验的终极方案
  • HyperLPR3实战指南:7天构建高精度车牌识别系统
  • Excalidraw与Notepad官网下载对比:哪个更适合技术笔记绘图?
  • BongoCat深度体验:让桌面萌宠为你的输入操作增添无限乐趣
  • 39、Bash 高级特性与技巧深度解析
  • 34、Bash编程:循环控制与脚本排错
  • 强力打造智能微信机器人:Puppet PadLocal完整指南
  • FaceFusion在游戏NPC生成中的实验性应用:动态角色面容合成
  • Wan2.1-I2V:开源视频生成技术的架构革新与产业实践
  • 35、脚本开发中的测试、调试与流程控制技巧
  • 36、Bash脚本编程:位置参数与for循环的深入应用
  • FaceFusion镜像安装指南:Windows与Linux系统下的AI人脸替换技术
  • OneDark-Pro 技术解析:VS Code 主题系统的高级实现方案
  • Langchain-Chatchat音频转录文本问答实现路径
  • FaceFusion支持Linux命令行操作?详细参数说明助你掌握核心功能
  • HTML转Figma工具完整使用指南:前端开发者的设计协作利器
  • 百度网盘秒传工具完全指南:网页端文件转存解决方案
  • USB Disk Ejector:Windows设备弹出神器完整使用手册
  • FluidNC ESP32运动控制固件从入门到精通指南
  • 微信群崩了,转账也收不了,腾讯回应
  • AI数字人制作门槛再降低!Linly-Talker一站式解决方案来了
  • 3分钟学会视频去水印:免费开源工具终极指南
  • Linly-Talker数字人生成速度优化技巧分享
  • YOLOv8 v8.3.87重磅升级:5分钟打造专业级检测报告,新手也能轻松上手
  • MODA:首个用于航空图像中多光谱目标检测的挑战性基准