1949. 坚定的友谊
SQL架构
表名: Friendship
+-------------+------+ | 列名 | 类型 | +-------------+------+ | user1_id | int | | user2_id | int | +-------------+------+ (user1_id, user2_id) 是这个表的主键。 这张表的每一行都表示用户 user1_id 和 user2_id 是朋友。 请注意,user1_id < user2_id。
如果一对朋友 x
和 y
至少有三个共同的朋 ,那么 x
和 y
之间的友谊就是坚定的。
写一个 SQ L查询来找到所有的坚定的友谊。
注意,结果表不应该包含重复,并且 user1_id < user2_id
。
以任何顺序返回结果表。
查询结果的格式在下面的例子中。
示例 1:
输入: 表 Friendship: +----------+----------+ | user1_id | user2_id | +----------+----------+ | 1 | 2 | | 1 | 3 | | 2 | 3 | | 1 | 4 | | 2 | 4 | | 1 | 5 | | 2 | 5 | | 1 | 7 | | 3 | 7 | | 1 | 6 | | 3 | 6 | | 2 | 6 | +----------+----------+ 输出: +----------+----------+---------------+ | user1_id | user2_id | common_friend | +----------+----------+---------------+ | 1 | 2 | 4 | | 1 | 3 | 3 | +----------+----------+---------------+ 解释: 用户 1 和 2 有 4 个共同的朋友(3,4,5,和 6)。 用户 1 和 3 有 3 个共同的朋友(2,6,和 7)。 我们没有包括用户 2 和 3 的友谊,因为他们只有两个共同的朋友(1 和 6)。
# Write your MySQL query statement below
with t1 as(
select
user1_id,user2_id# 左面是 所有的用户id 右面是所有用户id的朋友 id
from
Friendshipunion allselect
user2_id,user1_id
from
Friendship
),
t2 as (
select
l1.user1_id,l2.user1_id user2_id,count(distinct l1.user2_id) common_friend
from
t1 l1 join t1 l2
on l1.user2_id = l2.user2_id and l1.user1_id<>l2.user1_id
#t1表 按 user1_id相同 内连接 按 l1.user1_id 和 l2.user1_id 分组 查询 l1.user2_id(共同的朋友)的数量 >=3
group by l1.user1_id,l2.user1_id
having count(distinct l1.user2_id)>=3
)
select
t2.user1_id,t2.user2_id,t2.common_friend
from
t2 left join Friendship f
#t2表中的查询结果 包含类似于 (1,2)(2,1)因此 左连接 Friendship 表 选出(1,2)这样类型的数据
on t2.user1_id = f.user1_id and t2.user2_id = f.user2_id
where f.user1_id is not null
on 最后一个条件用 < 提高了效率:
with t1 as(
select
user1_id,user2_id# 左面是 所有的用户id 右面是所有用户id的朋友 id
from
Friendshipunion allselect
user2_id,user1_id
from
Friendship
) ,t2 as(select
l1.user1_id,l2.user1_id user2_id,count(distinct l1.user2_id) common_friend
from
t1 l1 join t1 l2
on l1.user2_id = l2.user2_id and l1.user1_id<l2.user1_id
#t1表 按 user1_id相同 内连接 按 l1.user1_id 和 l2.user1_id 分组 查询 l1.user2_id(共同的朋友)的数量 >=3
group by l1.user1_id,l2.user1_id
having count(distinct l1.user2_id)>=3
)
select
t2.user1_id,t2.user2_id,t2.common_friend
from
t2 left join Friendship f
#t2表中的查询结果 包含类不是朋友的值 因此 左连接 Friendship 表 选出互为朋友的数据
on t2.user1_id = f.user1_id and t2.user2_id = f.user2_id
where f.user1_id is not null
1949. 坚定的友谊相关推荐
- leetcode中等之1949.坚定的友谊
表名: Friendship 列名 类型 user1_id int user2_id int (user1_id, user2_id) 是这个表的主键. 这张表的每一行都表示用户 user1_id 和 ...
- 【LC中等】1949. 坚定的友谊
❤️博客主页: 楚生辉 ❤️系列专栏:[LeetCode刷题] ❤️一句短话: 坚持不懈,孜孜不倦 1.题目描述 表名: Friendship +-------------+------+ | 列名 ...
- 日本VS澳大利亚与“亚洲的友谊”
日本VS澳大利亚与"亚洲的友谊" 几年以来的日本足球常常让我们感叹他们的进步,从中田英寿到中村俊辅,从特鲁西埃到济科,技术型球队的风格日渐成熟,整体配合具备相当高的实力,联合会杯战 ...
- 计算机技能大赛广播稿,友谊第一比赛第二广播稿.doc
友谊第一比赛第二广播稿 友谊第一比赛第二广播稿 篇一:友谊第一比赛第二广播稿 致运动员 不为掌声的诠释, 不伟刻意的征服, 只有辛勤的汗水化作追求的脚步. 心中坚定的信念, 脚下沉稳的步伐, 你用行动 ...
- 鸿蒙系统搁置,华为:我们将坚定的支持安卓生态,鸿蒙系统没有明确上市时间...
对于目前的国产手机市场来说,除了期待像折叠屏手机,5G手机这样硬件方面的革新外,在软件系统方面,对已经确认有自己操作系统的华为也是期待万分.在这段时间里,关于华为鸿蒙操作系统的消息数不胜数,似乎离发布 ...
- 很多人都在埋怨没有遇到好的团队,但好的团队不可能凭空出现,一流的团队不能仅靠团队成员努力,作为Leader,要有可行的规划,并坚定地执行、时势地调整(转)...
<西游记>中的唐僧团队历经千难万险,终于求得真经,目标明确.分工合理为这支队伍最终走向成功奠定了基础.唐僧从一开始,就为这个团队设定了西天取经的目标,虽然经历各种挫折与磨难,但目标从未动摇 ...
- 高质量的友谊总是发生在两个优秀的独立人格之间
周国平 使一种交往具有价值的不是交往本身,而是交往者各自的价值.高质量的友谊总是发生在两个优秀的独立人格之间,它的实质是双方互相由衷的欣赏和尊敬.因此,重要的是使自己真正有价值,配得上做一个高质量的朋 ...
- 8. American Friendship 美国式的友谊
8. American Friendship 美国式的友谊 (1) Americans usually consider themselves a friendly people.Their frie ...
- 【正一专栏】轮回-从坚信去年骑士会逆转到今年坚定看好勇士横扫
轮回-从坚信去年骑士会逆转到今年坚定看好勇士横扫 NBA总决赛骑士回到主场依然没有阻挡住勇士队前进的步伐,最后时刻死神杜兰特终结了比赛,带领勇士绝地反击逆转了骑士队,骑士丢掉了到手的胜利,在大比分0: ...
最新文章
- 用Python3、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台两种发布方式)...
- 这款库克寄予厚望的苹果产品,只活了2年
- C++基础知识(二)--左值右值--逻辑表达式求值优化--逗号运算符与表示式--输入输出格式控制...
- PHP 实现一个可用的redis 事务锁, 解决并发问题
- A flight (to Boston) to Denver - 基于转移的顺滑技术研究 | 论文访谈间 #22
- Windwos中system、System32、SysWOW64区别
- linux关机_3.5 开关机命令及7个运行级别《LINUX-centos7-操作系统入门到精通》
- toStringequals方法
- 讲幻灯片的基本技巧——2021年中会议发言之二
- tcpdf 使用总结
- Jlink V8 在 Keil MDK5.25 中无法正常烧写、调试程序的故障处理
- C# 版 EXE捆绑器
- 02-DDL 数据定义语言
- 检查采购订单是否有零单价
- UVA 213 - Message Decoding 简单题 lambda表达式 23333333
- 转载:关于调制比、过调制、基波电压和母线电压的概念和关系总结
- 解决web系统session劫持
- VScode 的 code snippet 中可以使用的一些变量(时间,日期等)
- JDBC简介及原理和使用介绍
- Java互联网架构-企业级实战秒杀系统优化方案与应用思路