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,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
