大数据面试SQL(六):共同使用ip用户检测问题

news2024/11/14 18:21:10

文章目录

共同使用ip用户检测问题

一、题目

二、分析

三、SQL实战

四、样例数据参考


共同使用ip用户检测问题

一、题目

现有用户登录日志表,记录了每个用户登录的IP地址,请查询共同使用过3个及以上IP的用户对。

样例数据: 

结果数据:

二、分析

  • 题目给出的数据是登录记录,需要使用IP进行关联,找到使用相同IP的记录。
  • 因为要使用ip进行关联,首先保证每个用户同一个IP只有一条记录,否则关联会导致结果数据重复。
  • 自关联,会导致使用相同IP的用户,出现1-2,2-1两条记录、1-1,2-2自己的记录,这些记录需要去重和剔除;
  • 计算共同使用过的IP数量,得出结果。
维度评分
题目难度⭐️⭐️⭐️⭐️
题目清晰度⭐️⭐️⭐️⭐️⭐️
业务常见度⭐️⭐️⭐️⭐️

 

三、SQL实战

1、将所有用户登录记录按照用户ID和登录IP去重。 

查询语句:

select user_id,ip
from t6_login_log
group by user_id, ip;

查询结果: 

 

2、通过IP地址进行自关联,去重,剔除相同用户。 

查询语句:

with tmp as
         (select user_id,
                 ip
          from t6_login_log
          group by user_id, ip)
select t1.user_id,
       t2.user_id,
       t1.ip
from tmp as t1
         join
     tmp as t2
     on t1.ip = t2.ip
where t1.user_id < t2.user_id;

查询结果:

3、根据用户组计算使用共同IP的个数。

查询语句:

with tmp as
         (select user_id,
                 ip
          from t6_login_log
          group by user_id, ip)
select t1.user_id,
       t2.user_id,
       count(t1.ip)
from tmp as t1
         join
     tmp as t2
     on t1.ip = t2.ip
where t1.user_id < t2.user_id
group by t1.user_id,
         t2.user_id;

查询结果:

4、查询共同使用过3个以上IP的用户对。

查询语句:

with tmp as
         (select user_id,
                 ip
          from t6_login_log
          group by user_id, ip)
select t1.user_id,
       t2.user_id
from tmp as t1
         join
     tmp as t2
     on t1.ip = t2.ip
where t1.user_id < t2.user_id
group by t1.user_id,
         t2.user_id
having count(t1.ip) >= 3

查询结果:

5、合并过滤去重用户,得到最终结果。

查询语句:

with tmp as
(select user_id,ip
from t6_login_log
group by user_id, ip
),
t1 as (
select t1.user_id as user_id_a,
       t2.user_id as user_id_b
from tmp as t1
         join
     tmp as t2
     on t1.ip = t2.ip
where t1.user_id < t2.user_id
group by t1.user_id,
         t2.user_id
having count(t1.ip) >= 3
)
select user_id from
(select user_id_a as user_id from t1
union all
select user_id_b as user_id from t1) tt
group by user_id;

查询结果:

 

四、样例数据参考

--建表语句
CREATE TABLE t6_login_log (
    user_id bigint COMMENT '用户ID',
    ip string COMMENT '用户登录ip地址',
    time_stamp string COMMENT '登录时间'
) COMMENT '用户登录记录表';
-- 插入数据
insert into t6_login_log(user_id,ip,time_stamp)
values
    (1,'223.104.41.101','2024-08-24 16:00:00'),
    (1,'223.104.41.121','2024-08-24 17:00:00'),
    (1,'223.104.41.104','2024-08-24 19:00:00'),
    (1,'223.104.41.122','2024-08-24 21:00:00'),
    (1,'223.104.41.122','2024-08-24 22:00:00'),
    (2,'223.104.41.101','2024-08-24 07:00:00'),
    (2,'223.104.41.103','2024-08-24 19:00:00'),
    (2,'223.104.41.104','2024-08-24 16:30:00'),
    (2,'223.104.41.122','2024-08-24 17:05:00'),
    (3,'223.104.41.103','2024-08-24 18:11:00'),
    (3,'223.104.41.122','2024-08-24 19:07:00'),
    (3,'223.104.41.101','2024-08-24 16:02:00'),
    (4,'223.104.41.126','2024-08-24 13:00:00'),
    (5,'223.104.41.126','2024-08-24 11:00:00'),
    (4,'223.104.41.122','2024-08-24 10:00:00');

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1994086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NSSCTF练习记录:[SWPUCTF 2021 新生赛]jicao

题目&#xff1a; 这段PHP代码的意思是&#xff1a; 对index.php文件进行语法高亮显示&#xff0c;插入flag.php文件&#xff0c;变量id的值为POST传递的值&#xff0c;变量json的值为GET传递的json类型的值。当id值为wllmNB且json中含有键为“x”&#xff0c;值为“wllm”的时…

【Android】安卓四大组件之Service用法

文章目录 使用Handler更新UIService基本特点启动方式非绑定式服务使用步骤 绑定式服务步骤 生命周期非绑定式启动阶段结束阶段 绑定式启动阶段结束阶段 前台Service使用步骤结束结束Service本身降级为普通Service降级为普通Service 使用Handler更新UI 主线程创建Handler对象&a…

文件描述符中设置FD_CLOEXEC的用处

linux中&#xff0c;父进程fork出子进程&#xff0c;子进程本身会继承父进程的所有文件描述符。若子进程再调用exec系列函数转化为新的进程实体&#xff0c;其实父进程的描述符对其没有意义。此时文件上只需要设置FD_CLOEXEC即可。 下面是例子说明&#xff1a; #include <…

vue3、uniapp-vue3模块自动导入

没有使用插件 使用插件,模块自动导入 安装: npm i -D unplugin-auto-importvite.config.js (uniapp没有此文件,在项目根目录下创建) import { defineConfig } from "vite"; import uni from "dcloudio/vite-plugin-uni"; import AutoImport from &qu…

SpringBoot 自定义 Starter 实现

一、定义&#xff0c;什么是Starter SpringBoot Starter 是”一站式服务&#xff08;one-stop service&#xff09;“的依赖 Jar 包&#xff1a; 包含 Spring 以及相关技术&#xff08;比如Redis&#xff09;的所有依赖提供了自动配置的功能&#xff0c;开箱即用提供了良好的…

7. Kubernetes核心资源之Service服务实战

**service分类 : ** **ClusterIP : ** 默认类型&#xff0c;自动分配一个【仅集群内部】可以访问的虚拟IP **NodePort : ** 对外访问应用使用&#xff0c;在ClusterIP基础上为Service在每台机器上绑定一个端口&#xff0c;就可以通过: ipNodePort来访问该服务 **LoadBalanc…

[24年新算法]NRBO-XGBoost回归+交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测

[24年新算法]NRBO-XGBoost回归交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测 多输入单输出 程序已调试好&#xff0c;无需更改代码替换数据直接使用&#xff01;&#xff01;&#xff01;数据格式为excel格式&#xff01;如下。 中文注释清晰&#xff0c;图很丰富 …

2. C++的指针作用

目录 1.问题描述及分析 2.结论 不同类型所产生的指针在C语言中有什么作用&#xff1f;带着这个疑问&#xff0c;对C的指针进行简介。 1.问题描述及分析 在如下的一段代码中&#xff0c;分别有4个指针&#xff0c;这四个指针有什么不一样的地方么&#xff1f; class ZooAni…

Unity物理模块 之 ​2D刚体

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​ 1.刚体是什么 在 Unity 中&#xff0c;刚体&#xff08;Rigidbody&#xff09; 是物理引擎中最基本的组件之一&#x…

Python 函数(2)

2、函数 2.1、函数传递列表 将列表传递给函数后&#xff0c;函数就能直接访问其内容。 下列为一个实例&#xff1a;将一个名字列表传递给一个名为greet_users()的函数&#xff0c;这个函数将会向列表中的每一个元素执行相应的信息。 def greet_users(name):for name in name…

1.2 C 语言开发环境 CLion 的安装(含 Windows 和 Mac )

目录 1 C 语言的由来 2 安装 MinGW 编译器 3 Windows 中安装 CLion 开发环境 3.1 安装 CLion 开发环境 3.2 运行试用 30 天 3.3 新建项目​ 3.​4 激活 3.5 汉化 4 Mac 中安装 Clion 开发环境 4.1 安装 CLion 开发环境 4.2 运行试用 30 天 4.3 新建项目 ​4.4 激活…

RuoYi-Vue源码阅读(三):用户相关模块

文章目录 1 用户角色权限信息 getInfo1.1 后端代码实现步骤1.1.1 获取用户角色权限信息1.1.2 获取用户的角色集合 1.2 前端代码实现步骤 2 获取用户路由信息 getRouters2.1 后端代码实现步骤2.1.1 获取菜单目录2.1.2 构建前端路由所需要的菜单 2.2 前端代码实现步骤 3 参考链接…

设计模式20-备忘录模式

设计模式20-备忘录 动机定义与结构定义结构 C代码推导优缺点应用场景总结备忘录模式和序列化备忘录模式1. **动机**2. **实现方式**3. **应用场景**4. **优点**5. **缺点** 序列化1. **动机**2. **实现方式**3. **应用场景**4. **优点**5. **缺点** 对比总结 动机 在软件构建过…

Redis相关面试题(二)

一、BIT中不同命令使用的场景 Sring Seesion会话业务缓存分布式锁&#xff1a;为了防止用户同时登录多个设备进行操作 Int 计数器限流全局唯一ID Hash 电商购物车 BitMap 用户签到 List 消息队列 ZSet 排行榜 二、什么是缓存击穿&#xff0c;缓存穿透&#xff0c;…

C++--类和对象(一)

C是一个面向对象的编程语言&#xff0c;而面向对象编程有四大特性&#xff1a;封装&#xff0c;抽象&#xff0c;继承&#xff0c;多态。类和对象就是对应其中的封装&#xff0c;在C中将数据和对数据的操作都封装在一个class&#xff08;类&#xff09;的结构体中。 目录 类的…

【C++二分查找】2187. 完成旅途的最少时间

本文涉及的基础知识点 C二分查找 LeetCode2187. 完成旅途的最少时间 给你一个数组 time &#xff0c;其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间。 每辆公交车可以 连续 完成多趟旅途&#xff0c;也就是说&#xff0c;一辆公交车当前旅途完成后&#xf…

TCP如何建立长连接

文章目录 TCP建立长连接长连接和短连接长连接的优势TCP KEEPALIVE 心跳包心跳检测步骤 断线重连断线重连函数实现 实例服务端客户端程序功能演示效果 TCP建立长连接 长连接和短连接 长连接是指不论TCP的客户端和服务器之间是否有数据传输&#xff0c;都保持建立的TCP连接&…

Docker最佳实践(三):安装mysql

大家好&#xff0c;欢迎各位工友。 本篇呢我们就来演示一下如何在Docker中部署MySQL容器&#xff0c;可以按照以下步骤进行&#xff1a; 1. 搜索镜像 首先搜索MySQL镜像&#xff0c;可以使用以下命令&#xff1a; docker search mysql2. 拉取镜像 根据需求选择MySQL或Maria…

Oracle|DM 常用|不常用 SQL大口袋

目录 一、前言 二、SQL写法 1、sql获取某一条数据中的前一条和后一条 2、实现like多个值的查询&#xff08;Oracle和dm支持&#xff0c;MySQL未试过&#xff09; 3、start with connect by prior 使用方法 4、用hextoraw解决select、update、delete语句执行慢 5、ORA-00…

叉车数字化安全管理平台,安全管控升级,打造智慧监管新模式

近年来&#xff0c;国家和各地政府相继出台了多项政策法规&#xff0c;从政策层面推行叉车智慧监管&#xff0c;加大叉车安全监管力度。同时鼓励各地结合实际&#xff0c;积极探索智慧叉车建设&#xff0c;实现作业人员资格认证、车辆状态认证、安全操作提醒、行驶轨迹监控等&a…