MySQL高阶1919-兴趣相同的朋友

devtools/2024/9/22 14:49:35/

题目

请写一段SQL查询获取到兴趣相同的朋友。用户 x 和 用户 y 是兴趣相同的朋友,需满足下述条件:

  • 用户 x 和 y 是朋友,并且
  • 用户 x and y 在同一天内听过相同的歌曲,且数量大于等于三首.

结果表 无需排序 。注意:返回的结果需要和源数据表的呈现方式相同 (例如, 需满足 user1_id < user2_id)。

准备数据

Create table If Not Exists Listens (user_id int, song_id int, day date)
Create table If Not Exists Friendship (user1_id int, user2_id int)Truncate table Listensinsert into Listens (user_id, song_id, day) values ('1', '10', '2021-03-15')insert into Listens (user_id, song_id, day) values ('1', '11', '2021-03-15')insert into Listens (user_id, song_id, day) values ('1', '12', '2021-03-15')insert into Listens (user_id, song_id, day) values ('2', '10', '2021-03-15')insert into Listens (user_id, song_id, day) values ('2', '11', '2021-03-15')insert into Listens (user_id, song_id, day) values ('2', '12', '2021-03-15')insert into Listens (user_id, song_id, day) values ('3', '10', '2021-03-15')insert into Listens (user_id, song_id, day) values ('3', '11', '2021-03-15')insert into Listens (user_id, song_id, day) values ('3', '12', '2021-03-15')insert into Listens (user_id, song_id, day) values ('4', '10', '2021-03-15')insert into Listens (user_id, song_id, day) values ('4', '11', '2021-03-15')insert into Listens (user_id, song_id, day) values ('4', '13', '2021-03-15')insert into Listens (user_id, song_id, day) values ('5', '10', '2021-03-16')insert into Listens (user_id, song_id, day) values ('5', '11', '2021-03-16')insert into Listens (user_id, song_id, day) values ('5', '12', '2021-03-16')Truncate table Friendshipinsert into Friendship (user1_id, user2_id) values ('1', '2')insert into Friendship (user1_id, user2_id) values ('2', '4')insert into Friendship (user1_id, user2_id) values ('2', '5')

listens表

friendship表

 

分析数据

select distinct user1_id,user2_id
from Friendship fleft join Listens l1on user1_id=l1.user_idleft join Listens l2on user2_id=l2.user_id
where l1.song_id=l2.song_idand l1.day=l2.day
group by user1_id,user2_id,l1.day
having count(distinct l2.song_id)>=3;

总结

 这道题是找出在friendship表存在的,只需要关联就行.与1917题不同.


http://www.ppmy.cn/devtools/115512.html

相关文章

获取STM32 MCU的唯一ID

STM32每个系列都会有唯一的一个芯片序列号&#xff08;96位bit&#xff09; STM32F10X 的起始地址是 0x1FFFF7E8 STM32F20X 的起始地址是 0x1FFF7A10 STM32F30X 的起始地址是 0x1FFFF7AC STM32F40X 的起始地址是 0x1FFF7A10 STM32L0XX 的起始地址是 0x1FF80050 STM32L1XX 的起…

浏览器插件利器--allWebPluginV2.0.0.20-stable版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

扣子智能体实战-汽车客服对话机器人(核心知识:知识库和卡片)

这一节的主要内容是通过创建一个汽车客户对话机器人学习扣子平台知识库和卡片的使用。 机器人参考&#xff1a; 企业汽车客服 资深汽车销售 一&#xff0c;汽车销售机器人需求简介 汽车销售是一个需要 7*24h在线的客服咨询岗位&#xff0c;专业性强&#xff0c;但流动性非…

2、论文阅读:用于超高清交通监控的双域引导实时低光图像增强

用于超高清交通监控的双域引导实时低光图像增强 前言动机传统弱光增强方法的缺陷基于深度神经网络方法的缺陷解决贡献双域导引微光图像增强网络高斯拉普拉斯算子(边缘特征的抽取)二阶导数离散卷积核 KL 生成 梯度特征图高斯平滑滤波来降低噪声对图像的干扰前言 弱光条件下拍…

C# 找到给定点集的简单闭合路径(Find Simple Closed Path for a given set of points)

给定一组点&#xff0c;将这些点连接起来而不相交 例子&#xff1a; 输入&#xff1a;points[] {(0, 3), (1, 1), (2, 2), (4, 4), (0, 0), (1, 2), (3, 1}, {3, 3}}; 输出&#xff1a;按以下顺序连接点将 不造成任何交叉 {(0, 0), (3, …

QT<24> Qt和windows中获取CPU序列号号以及主板序列号

前言&#xff1a;在qt中获取CPU和主板唯一序列号&#xff0c;可以在程序构造函数中判断是否与windows中一致&#xff0c;不一致可以直接退出程序&#xff0c;防止程序daoyong。 一、获取电脑CPU唯一序列号 QString MainPage::get_cpu() {QString cmd"wmic cpu get proc…

hive分区详细教程

为什么要分区&#xff1f; 为了提高sql的查询效率 比如&#xff1a; select * from orders where create_date20230826; 假如数据量比较大&#xff0c;这个sql就是全表扫描&#xff0c;速度肯定慢。 可以将数据按照天进行分区&#xff0c;一个分区就是一个文件夹&#xff0c;当…

第52课 Scratch游戏入门:五子棋

五子棋 故事背景: 会下五子棋么?五个颜色一样的棋子,横竖斜向有五个连在一起,就胜利,让我们一起来绘制一个五子棋的棋盘,同时一起开始下棋吧! 开始编程 1、删除预设的猫咪角色,使用绘制工具绘制白色和黑色的棋子。(使用圆形和圆形渐变色填充棋子) 新绘制棋盘等其他角…