MySQL高阶1949-坚定地友谊

news2024/11/16 19:48:25

目录

题目

准备数据

分析数据

实现


题目

如果 x  和 y 为 朋友 且他们 至少 有三个共同的朋友 ,那么 x 和 y 之间的友谊就是 坚定的

写一个解决方案来找到所有的 坚定的友谊

注意,结果表不应该包含重复的行,并且 user1_id < user2_id

以 任何顺序 返回结果表。

准备数据

Create table If Not Exists Friendship (user1_id int, user2_id int)
Truncate table Friendship
insert into Friendship (user1_id, user2_id) values ('1', '2')
insert into Friendship (user1_id, user2_id) values ('1', '3')
insert into Friendship (user1_id, user2_id) values ('2', '3')
insert into Friendship (user1_id, user2_id) values ('1', '4')
insert into Friendship (user1_id, user2_id) values ('2', '4')
insert into Friendship (user1_id, user2_id) values ('1', '5')
insert into Friendship (user1_id, user2_id) values ('2', '5')
insert into Friendship (user1_id, user2_id) values ('1', '7')
insert into Friendship (user1_id, user2_id) values ('3', '7')
insert into Friendship (user1_id, user2_id) values ('1', '6')
insert into Friendship (user1_id, user2_id) values ('3', '6')
insert into Friendship (user1_id, user2_id) values ('2', '6')

分析数据

第一步:

UNION ALL合并,UNION ALL不会消除重复的行,意味着如果user1_iduser2_id互为好友,那么这两行都会被包含。并且按照user_idfriend_id的顺序。

select user1_id user_id,user2_id friend_id
from Friendship
union all
select user2_id,user1_id
from Friendship
order by 1,2;

第二步:

  • where (t1.user_id, t2.user_id) in (select * from t):确保t1t2中的user_id对在CTE t中存在。
  • and t1.friend_id = t2.friend_id:确保t1t2有相同的friend_id,即它们有共同的好友。
  • and t1.user_id < t2.user_id:确保user1_id小于user2_id,避免重复的组合(例如,用户1和用户2与用户2和用户1被视为相同的组合)。
  • group by 1, 2:按user1_iduser2_id分组。
  • having count(distinct t1.friend_id) >= 3:筛选出至少有3个不同共同好友的用户对。
with t as (
    (select user1_id user_id,user2_id friend_id
     from Friendship
     union all
     select user2_id,user1_id
     from Friendship)
        order by 1,2
)
select *
from t t1,t t2
where (t1.user_id,t2.user_id) in (select * from t)
    and t1.friend_id = t2.friend_id
  and t1.user_id < t2.user_id
order by 1,2;

第三步:

  • select t1.user_id user1_id, t2.user_id user2_id, count(distinct t1.friend_id) common_friend:选择两列user1_iduser2_id,以及它们之间不同的共同好友数量common_friend
with t as (
    (select user1_id user_id,user2_id friend_id
     from Friendship
     union all
     select user2_id,user1_id
     from Friendship)
        order by 1,2
)
select t1.user_id user1_id
     ,t2.user_id user2_id
     ,count(distinct t1.friend_id) common_friend
from t t1,t t2
where
    (t1.user_id,t2.user_id) in (select * from t)
  and t1.friend_id = t2.friend_id
  and t1.user_id < t2.user_id
group by 1,2
having count(distinct t1.friend_id) >=3;

实现

with t as (
    (select user1_id user_id,user2_id friend_id
     from Friendship
     union all
     select user2_id,user1_id
     from Friendship)
        order by 1,2
)
select t1.user_id user1_id
     ,t2.user_id user2_id
     ,count(distinct t1.friend_id) common_friend
from t t1,t t2
where
    (t1.user_id,t2.user_id) in (select * from t)
  and t1.friend_id = t2.friend_id
  and t1.user_id < t2.user_id
group by 1,2
having count(distinct t1.friend_id) >=3;

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

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

相关文章

一些Spring面试题

Spring boot可以同时处理多少个请求? 用户进来先看目前数量是否小于最大连接数&#xff0c;多于【最大连接数最大队列数】的线程会等待&#xff0c;超过最大等待时间会TIME_OUT 81921008292

软件测试找工作|20道银行项目高频面试题

小编给大家上面试干货啦&#xff01;把前两天整理的银行项目面试题系列汇总给你们复习吼&#xff01; 先来看下面试题的目录叭...... 1、介绍一下贷款的项目&#xff1f; 贷款项目是银行业务中的重要组成部分&#xff0c;它是指银行向客户提供资金&#xff0c;让客户在约定的…

kubectl linux 安裝

添加 Kubernetes 的yum仓库&#xff0c;会覆盖 /etc/yum.repos.d/kubernetes.repo 中现存的所有配置 cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttps://pkgs.k8s.io/core:/stable:/v1.28/rpm/ enabled1 gpgcheck1 gpg…

Docker从入门到精通_01 Docker:引领云计算的新浪潮

Docker从入门到精通_01 Docker&#xff1a;引领云计算的新浪潮 云计算作为信息技术领域的重要支柱&#xff0c;正以前所未有的速度发展。然而&#xff0c;传统的虚拟化架构在资源利用、部署效率、应用扩展等方面已逐渐显露出其局限性。在这样的背景下&#xff0c;容器云技术应…

如何使用 python 调用 llama3 进行对话?

Meta 已将最新的 LLaMa3 进行了开源&#xff0c;因此&#xff0c;我们也可以方便的使用 Python 进行 LLaMa3 模型的调用和开发。 接下来&#xff0c;简单介绍如何通过 transformers 库来使用 LLaMa3。 1、导入库 首先&#xff0c;导入必要的库&#xff1a; pip3 install tra…

【2024】前端学习笔记10-基本选择器-组合选择器

学习笔记 基本选择器ID选择器 组合选择器后代选择器子选择器兄弟选择器 基本选择器 之前文章使用的分别为元素选择器和类选择器&#xff0c;这里不再过多记录。 元素选择器 p {color: blue;font-size: 14px; }在这个例子中&#xff0c;所有的<p>元素的文本颜色将被设置…

常见区块链数据模型介绍

除了加密技术和共识算法&#xff0c;区块链技术还依赖于一种数据模型&#xff0c;它决定了信息如何被结构化、验证和存储。数据模型定义了账户如何管理&#xff0c;状态转换如何发生&#xff0c;以及用户和开发者如何与系统交互。 在区块链技术的短暂历史中&#xff0c;数据…

如何开发数字药店与医保购药APP:技术架构与实现细节

本文将深入探讨数字药店与医保购药APP的技术架构及其实现细节&#xff0c;帮助开发者更好地理解该领域的技术需求。 一、技术架构概述 数字药店与医保购药APP的技术架构通常可以分为以下几个层次&#xff1a; 1.前端层&#xff1a; -用户界面 -用户体验 2.中间层&#xff…

c++初级——多态

多态的概念 多态的概念&#xff1a;通俗来讲&#xff0c;就是多种形态。 多态也有类别&#xff08;我们把编译时⼀般归为静态&#xff0c;运⾏时归为动态&#xff09; 运行时多态&#xff08;静态多态&#xff09;其中包括函数重载和函数模板&#xff0c;它们通过传不同类型…

RS FSW43 信号与频谱分析仪

FSW43 信号与频谱分析仪 苏州新利通仪器仪表有限公司 Rohde & Schwarz FSW43 信号与频谱分析仪具有较高内部分析带宽&#xff0c;可对宽带组件和通信系统进行特征校准。同时具备出色的相位噪声和灵敏度&#xff0c;有助于开发高性能振荡器。 R&SFSW 信号与频谱分析…

③无需编程 独立通道 Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器

Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器https://item.taobao.com/item.htm?ftt&id743840591638 接上一章 EtherNet/IP 串口网关 EtherNet/IP 转 RS485 EtherNet/IP 通信功能 EtherNet/IP 概述 EtherNet/IP 是通过“ODVA(Open DeviceNet Vendor…

Chrome Cookie最大有效期

Chrome Cookie最大有效期 代码设置了cookie有效期是10年&#xff0c;但在浏览器上实际上发现只有一年多一点&#xff0c;查证后发现chrome对cookie的最大有效期做了限制&#xff08;400&#xff09;天&#xff0c;实际上99.9999%的场景也是可以满足的 官方表述 测试 理论设置 …

[RabbitMQ] RabbitMQ介绍,安装与快速上手

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

设计师一定要收藏好这6个网站,设计必备

新手设计师找免费素材&#xff0c;找灵感就上这6个网站&#xff0c;赶紧收藏好&#xff01; 1、设计素材——菜鸟图库 菜鸟图库-免费设计素材下载 菜鸟图库是一个非常大的素材库&#xff0c;站内包含设计、办公、自媒体、图片、电商等各行业素材。网站还为新手设计师提供免费的…

注册安全分析报告:人民卫生音像

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

MySQL高阶1951-查询具有最多共同关注者的所有两两结成对

目录 题目 准备数据 分析数据 实现 题目 写出一个查询语句&#xff0c;找到具有最多共同关注者的所有两两结对组。换句话说&#xff0c;如果有两个用户的共同关注者是最大的&#xff0c;我们应该返回所有具有此最大值的两两结对组 结果返回表&#xff0c;每一行应该包含u…

1.1.4 计算机网络的分类

按分布范围分类&#xff1a; 广域网&#xff08;wan&#xff09; 城域网&#xff08;man&#xff09; 局域网&#xff08;lan&#xff09; 个域网&#xff08;pan&#xff09; 注意&#xff1a;如今局域网几乎采用“以太网技术实现”&#xff0c;因此“以太网”几乎成了“局域…

WebGL入门(一)绘制一个点

源码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scr…

硬件设计-噪声的学习

目录 LDO 噪声和 PSRR ​编辑 噪声类型 数据表中的噪声规格 哪种规格适合您的应用 如何降低 LDO 噪声&#xff1f; LDO 噪声的影响 LDO 噪声和 PSRR 低压差线性稳压器 (LDO) 为调节由较高电压输入产生的输出电压提供了一种简单方法。虽然操作简单&#xff0c;但其自生噪…

codeforces round973 div2

A zhans blender 问题&#xff1a; 思路&#xff1a; 模拟 代码&#xff1a; #include <bits/stdc.h> using namespace std;typedef long long ll;void solve() {int n, x, y;cin >> n >> x >> y;cout << (n min(x, y) - 1) / min(x, y) &…