【力扣白嫖日记】602.好友申请II:谁有最多的好友

news/2024/7/7 21:15:52

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

602.好友申请II:谁有最多的好友
表:RequestAccepted

列名类型
requester_idint
accepter_idint
accept_datedate

(requester_id, accepter_id) 是这张表的主键(具有唯一值的列的组合)。
这张表包含发送好友请求的人的 ID ,接收好友请求的人的 ID ,以及好友请求通过的日期。

编写解决方案,找出拥有最多的好友的人和他拥有的好友数目。生成的测试用例保证拥有最多好友数目的只有 1 个人。

进阶:在真实世界里,可能会有多个人拥有好友数相同且最多,你能找到所有这些人吗?


我那不值一提的想法:

  • 首先梳理表内容,题干一共给了一张请求表,记录了发送请求id,接受者id,接受日期
  • 其次分析需求,需要找到拥有最多好友的人和他拥有的好友数量
  • 首先查好友数量,通过这个表我们可以观察到,好友的数量=requester_id的数量+accepter_id的数量,这里我们可以通过别查询requester_id的数量和accpter_id的数量
  • 然后再使用union all 连接所有的结果,就能得到用户接受好友的数量,以及用户被接受好友的数量
  • 最后再将结果建立成临时表,从临时表里面查询结果。
select requester_id as id,sum(num) as num 
from 
(
    select requester_id,count(requester_id) as num
    from RequestAccepted
    group by requester_id
    union all
    select accepter_id,count(accepter_id) as num 
    from RequestAccepted
    group by accepter_id
) as a 
group by requester_id
order by num desc
limit 1

对于进阶版来说,就是可能会有多种情况,我觉得最简单的方法就是再加一层嵌套,然后去掉limit1,将好友数量的所有结果保存到一张临时表中,然后嵌套查询,条件就是where num =
(select max(num) from 临时表)

with temp as (
    select requester_id as id,sum(num) as num 
    from 
    (
        select requester_id,count(requester_id) as num
        from RequestAccepted
        group by requester_id
        union all
        select accepter_id,count(accepter_id) as num 
        from RequestAccepted
        group by accepter_id
    ) as a 
    group by requester_id
    order by num desc
)
select id,num 
from temp
where num = (select max(num) from temp)

结果:

在这里插入图片描述


总结:

能运行就行。



http://lihuaxi.xjx100.cn/news/2060886.html

相关文章

CleanMyMac X好不好用?2024版本有哪些独特的功能

CleanMyMac X:Mac的瑞士军刀,让您的电脑焕然一新 在数字时代,我们的Mac电脑扮演着至关重要的角色,无论是工作、学习还是娱乐,都离不开它。然而,随着时间的推移,我们的Mac可能会因为各种缓存文件…

在OceanBase使用中,如何优化因Join估算不准导致执行计划选错的问题

作者:胡呈清,爱可生公司旗下的DBA团队成员,擅长故障分析和性能优化。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约 1600 字,预计阅读需要 15 分钟。 数据库版本&…

ERROR: No matching distribution found for cv2

一直以为是我版本的问题,后来一查才发现包名是另一个名字,仅以此博客记录 安装cv2库命令 pip install opencv-python安装sklearn库命令 pip install scikit-learn

ESP32 partitions分区表的配置

由于在使用ESP32会遇到编译出来的bin文件大于分区表的时候,因此需要我们修改分区表或者使用自定义分区表的方式来解决。(项目是使用VScode来搭建和调试的,VScode YYDS) 具体分区标的含义这里就不讲了,网上有很多文档介…

​用细节去解释,如何打造一款行政旗舰车型

高山行政加长版应该是这个级别里最大的几款 MPV 之一了,对于一款较大的车型,其最重要的是解决行驶的便利性。 这次我们就试试魏牌高山行政加长版,从产品本身出发看几个纬度的细节: 行政该如何定义加长后产品的功能变化加长之后到…

ceph性能测试

查看集群状态 ceph -s查看osd情况 ceph osd tree创建pg_num为60的pool&#xff0c;名为test。 ceph osd pool create test 60rados bench用于测试rados存储池底层性能&#xff0c;该工具可以测试写、顺序读、随机读三种类型 rados bench -p <pool_name> <seconds&…

CSS 显示隐藏动画(动画失效问题)

就像这个动画一样的效果&#xff0c;div 先是隐藏的&#xff0c;点击按钮后显示并且有动画效果&#xff0c;隐藏的时候同样。 <button class"btn" id"btn">点击</button><div class"box" id"box"></div><s…

Cisco Secure ACS 5.8.0.32 安装 + Crack 教程

Cisco Secure ACS 5.8.0.32 安装 Crack 教程 前言系统环境开始安装 开始破解导入授权文件 前言 在ESXi 6.7 上经历过无数次的安装尝试 测试了各种兼容版本都没有安装成功,记最后一次安装成功的过程. 系统环境 服务器 : Dell R720xd CPU : E5-2620 v2 系统 : ESXi 6.7…