SQL面试题挑战06:互相关注的人
目录
- 问题:
- SQL解答:
问题:
现在有一张relation表,里面只有两个字段:from_user和to_user,代表关注关系从from指向to,即from_user关注了to_user。现在要找出互相关注的所有人。
from_user to_user
孙悟空 唐僧
唐僧 如来佛祖
唐僧 观音菩萨
观音菩萨 如来佛祖
唐僧 孙悟空
孙悟空 玉皇大帝
玉皇大帝 如来佛祖
如来佛祖 观音菩萨
如来佛祖 玉皇大帝
如来佛祖 唐僧
孙悟空 猪八戒
猪八戒 嫦娥
猪八戒 孙悟空
猪八戒 唐僧
猪八戒 沙僧
沙僧 猪八戒
沙僧 玉皇大帝
沙僧 孙悟空
沙僧 唐僧
SQL解答:
解答思路一:使用自关联即可,这种方式简单也最易理解。适合数据量不是很大的情况,因为会导致数据膨胀。
with tmp as
(
select '孙悟空' as from_user , '唐僧' as to_user
union all
select '唐僧' as from_user , '如来佛祖' as to_user
union all
select '唐僧' as from_user , '观音菩萨' as to_user
union all
select '观音菩萨' as from_user , '如来佛祖' as to_user
union all
select '唐僧' as from_user , '孙悟空' as to_user
union all
select '孙悟空' as from_user , '玉皇大帝' as to_user
union all
select '玉皇大帝' as from_user , '如来佛祖' as to_user
union all
select '如来佛祖' as from_user , '观音菩萨' as to_user
union all
select '如来佛祖' as from_user , '玉皇大帝' as to_user
union all
select '如来佛祖' as from_user , '唐僧' as to_user
union all
select '孙悟空' as from_user , '猪八戒' as to_user
union all
select '猪八戒' as from_user , '嫦娥' as to_user
union all
select '猪八戒' as from_user , '孙悟空' as to_user
union all
select '猪八戒' as from_user , '唐僧' as to_user
union all
select '猪八戒' as from_user , '沙僧' as to_user
union all
select '沙僧' as from_user , '猪八戒' as to_user
union all
select '沙僧' as from_user , '玉皇大帝' as to_user
union all
select '沙僧' as from_user , '孙悟空' as to_user
union all
select '沙僧' as from_user , '唐僧' as to_user
)
select
a.from_user,
a.to_user,
if(b.from_user is not null, 1, 0) as is_friend -- 1:互相关注
from tmp a
left join tmp b
on a.from_user=b.to_user and a.to_user=b.from_user
;
解答思路二:找到互相关注的人的规律,当他们是互相关注时,那么将from_user和to_user其中一个顺序调换位置后,from_user和to_user就一定会出现两条数据(源表提前已经去重),所有出现两条数据的人就是有互相关注的。这种方式不会导致数据膨胀。
with tmp as
(select '孙悟空' as from_user , '唐僧' as to_user
union all
select '唐僧' as from_user , '如来佛祖' as to_user
union all
select '唐僧' as from_user , '观音菩萨' as to_user
union all
select '观音菩萨' as from_user , '如来佛祖' as to_user
union all
select '唐僧' as from_user , '孙悟空' as to_user
union all
select '孙悟空' as from_user , '玉皇大帝' as to_user
union all
select '玉皇大帝' as from_user , '如来佛祖' as to_user
union all
select '如来佛祖' as from_user , '观音菩萨' as to_user
union all
select '如来佛祖' as from_user , '玉皇大帝' as to_user
union all
select '如来佛祖' as from_user , '唐僧' as to_user
union all
select '孙悟空' as from_user , '猪八戒' as to_user
union all
select '猪八戒' as from_user , '嫦娥' as to_user
union all
select '猪八戒' as from_user , '孙悟空' as to_user
union all
select '猪八戒' as from_user , '唐僧' as to_user
union all
select '猪八戒' as from_user , '沙僧' as to_user
union all
select '沙僧' as from_user , '猪八戒' as to_user
union all
select '沙僧' as from_user , '玉皇大帝' as to_user
union all
select '沙僧' as from_user , '孙悟空' as to_user
union all
select '沙僧' as from_user , '唐僧' as to_user
)
select
from_user
,to_user
,count(1) over(partition by feature) as is_friend ---1:不是 2:是
from
(selectfrom_user,to_user--当有互相关注时,保证只将其中的一对用户调换from_user和to_user并拼接,if(from_user>to_user,concat(from_user,to_user),concat(to_user,from_user)) as featurefrom tmp
)t1
;
相关文章:
SQL面试题挑战06:互相关注的人
目录 问题:SQL解答: 问题: 现在有一张relation表,里面只有两个字段:from_user和to_user,代表关注关系从from指向to,即from_user关注了to_user。现在要找出互相关注的所有人。 from_user to_…...
LSTM和GRU的区别
LSTM(Long Short-Term Memory)和GRU(Gated Recurrent Unit)都是循环神经网络(RNN)的变体,旨在解决传统RNN中的梯度消失和梯度爆炸的问题,使网络能够更好地处理长期依赖关系。 以下是…...
算法基础之数字三角形
数字三角形 核心思想:线性dp 集合的定义为 f[i][j] –> 到i j点的最大距离 从下往上传值 父节点f[i][j] max(f[i1][j] , f[i1][j1]) w[i][j] 初始化最后一层 f w #include <bits/stdc.h>using namespace std;const int N 510;int w[N][N],f[N][…...
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
冒泡排序: def bubble_sort(li): # 函数方式for i in range(len(li)-1):exchangeFalsefor j in range(len(li)-i-1):if li[j]>li[j1]:li[j],li[j1]li[j1],li[j]exchangeTrueif not exchange:return 选择排序: 从左往右找到最小的元素,放在起始位置…...
如何使用Docker部署Dashy并无公网ip远程访问管理界面
文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航…...
【接口测试】如何定位BUG的产生原因
我们从在日常功能测试过程中对UI的每一次操作说白了就是对一个或者多个接口的一次调用,接口的返回的内容(移动端一般为json)经过前端代码的处理最终展示在页面上。http接口是离我们最近的一层接口,web端和移动端所展示的数据就来自于这层,那么…...
JavaScript 中的短路求值(if语句简洁写法--逻辑运算符||和的高级用法)
在JavaScript中,Short-Circuit Evaluation(短路求值)是一种逻辑运算的行为,其中表达式的求值在达到不必要的部分时就提前终止(所以短路一词非常贴切)。这种行为可以通过逻辑运算符(例如&&am…...
普本毕业,还有逆风翻盘的机会吗?
作为普通二本的本科生,从踏入大学开始,我一直在不断寻找自己感兴趣的行业和职业方向。 在这里,我想给大家分享一些我从校园走向工作整个学习和求职过程,以及其中的酸甜苦辣,希望这些经历可以给各位学弟学妹一些鼓励和…...
spark:RDD编程(Python版)
RDD运行原理 RDD设计背景 许多选代目前的MapReduce框架都是把中间结果写入到稳定存储 (比如磁盘)中带来了大量的数据复制、磁盘IO和序列化开销 RDD就是为了满足这种需求而出现的,它提供了一个抽象的数据架构,我们不必担心底层数据的分布式特性…...
中国元宇宙论坛暨常孝元宇宙发布会即将在京举行
中国元宇宙论坛暨常孝元宇宙发布会将于2024年1月9日在北京科技会堂盛大开启。本次论坛汇聚业内顶尖专家、学者和企业代表,共同探讨中国元宇宙、常孝元宇宙《神由都城》的未来发展、技术创新和应用场景。此次发布会将颠覆我们对数字世界的认知,带来前所未有的体验。 《神由都城》…...
华为认证 | 云计算方向HCIE有效期多久?实验报名费多少?
云计算技术已经成为了企业和个人发展的重要网络技术支撑。 而在这个领域中,华为HCIE云计算证书也成为了越来越多人追求的敲门砖。 然而,很多人对于这个证书的有效期以及实验报名费并不清楚。 下面将为你详细解答这些问题。 01 云计算方向HCIE有效期多…...
动物分类识别教程+分类释义+界面展示
1.项目简介 动物分类教程分类释义界面展示 动物分类是生物学中的一个基础知识,它是对动物进行分类、命名和描述的科学方法。本教程将向您介绍动物分类的基本原则和方法,并提供一些常见的动物分类释义。 动物分类的基本原则 动物分类根据动物的形态、…...
【Java动态代理如何实现】
✅Java动态代理如何实现 ✅JDK动态代理和Cglib动态代理的区别 ✅拓展知识仓✅静态代理和动态代理的区别✅动态代理的用途✅Spring AOP的实现方式📑JDK 动态代理的代码段📑Cglib动态代理的代码块 ✅注意事项: 在Java中,实现动态代理…...
数据库(部分函数)
函数: 单行函数:会对查询中的每一数据进行处理 字符函数 length(列名) select name, 日期函数: now() 年月日时分秒 curdate() 年月日 curtime()时分秒 …...
基于Vite+Vue3 给项目引入Axios
基于ViteVue3 给项目引入Axios,方便与后端进行通信。 系列文章指路👉 系列文章-基于Vue3创建前端项目并引入、配置常用的库和工具类 文章目录 安装依赖新建src/config/config.js 用于存放常用配置进行简单封装解决跨域问题调用尝试 安装依赖 npm install axios …...
为什么查企业的时候有的公司没有显示注册资金?
我们在查询企业信息时,有时候会遇到某一家企业没有注册资金的情况,但是该企业又不是已经注销的。出现这种情况是什么原因呢? 1.该公司是一家分公司,分公司没有独立法人资格,因此没有注册资金。 2.有些情况下…...
DataProcess-VOC数据图像和标签一起进行Resize
VOC数据图像和标签一起进行Resize 参加检测比赛的时候,很多时候工业原始数据尺度都比较大,如果对数据不提前进行处理,会导致数据在加载进内存时花费大量的时间,所以在执行训练程序之前需要将图像提前进行预处理。对于目标检测的数…...
MultiValueMap
MultiValueMap是Spring框架中提供的一个接口,它继承了Map接口,用于存储键值对,但与普通的Map不同的是,MultiValueMap中一个键可以对应多个值,因此它也可以被称为“多值Map”。 MultiValueMap的使用场景一般是在需要存…...
山西电力市场日前价格预测【2023-12-25】
日前价格预测 预测说明: 如上图所示,预测明日(2023-12-25)山西电力市场全天平均日前电价为469.89元/MWh。其中,最高日前电价为1048.40元/MWh,预计出现在08:30。最低日前电价为252.77元/MWh,预计…...
【华为OD机试真题2023CD卷 JAVAJS】5G网络建设
华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 5G网络建设 时间限制:4s 空间限制:256MB 限定语言:不限 题目描述: 现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
