首页 > 数据库 >力扣602(MySQL)-好友申请Ⅱ:谁有最多的好友(中等)

力扣602(MySQL)-好友申请Ⅱ:谁有最多的好友(中等)

时间:2023-03-31 11:11:52浏览次数:30  
标签:count 602 union 力扣 好友 id select

题目:

在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。

RequestAccepted 表:

(requester_id, accepter_id) 是这张表的主键。
这张表包含发送好友请求的人的 ID ,接收好友请求的人的 ID ,以及好友请求通过的日期。

问题
写一个查询语句,找出拥有最多的好友的人和他拥有的好友数目。

生成的测试用例保证拥有最多好友数目的只有 1 个人。

示例:

输入:

RequestAccepted 表:

 输出:

 解释:
编号为 3 的人是编号为 1 ,2 和 4 的人的好友,所以他总共有 3 个好友,比其他人都多。

解题思路:

 使用union all不去重连接:

①先将两张表不去重连接;

1 select requester_id id from request_accepted_602
2 union all
3 select accepter_id id from request_accepted_602

 ②再使用group by 按照id进行分组,然后select 里统计出每个id出现的次数,再按次数进行降序排序,最后limit 1。

1 select id,count(*) as num
2 from (
3     select requester_id id from request_accepted_602
4     union all
5     select accepter_id id from request_accepted_602
6     ) t
7 group by id
8 order by num DESC
9 limit 1

  小知识:

①SQL的书写顺序:

select =>  from  => join => on => where => group by => having => union => order by => limit

②SQL的执行顺序:

from =>  on  => join => where => group by =>  having => select  => union => order by => limit

③count(*),count(1)和count(字段)

count(*)和count(1)执行效果上没有区别,会统计列值为null的所有行数,只是在执行效率上有区别。

count(字段):只包含列名的列,统计表中出现该字段的次数,并且不统计字段为null的情况。

标签:count,602,union,力扣,好友,id,select
From: https://www.cnblogs.com/liu-myu/p/17275439.html

相关文章

  • 力扣601(MySQL)-体育馆的人的流量(困难)
    题目:表:Stadium编写一个SQL查询以找出每行的人数大于或等于100且id连续的三行或更多行记录。返回按visit_date升序排列的结果表。查询结果格式如下所示示例1:  解释:id为5、6、7、8的四行id连续,并且每行都有>=100的人数记录。请注意,即使第7行和第8行......
  • 力扣---面试题 01.09. 字符串轮转
    字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1:输入:s1="waterbottle",s2="erbottlewat"......
  • 力扣26.删除有序数组中的重复项【顺序表】
    ......
  • 力扣-数组-双指针
        1classSolution(object):2defremoveElement(self,nums,val):3"""4:typenums:List[int]5:typeval:int......
  • 力扣---面试题 01.04. 回文排列
    给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。......
  • 力扣 78. 子集
    78.子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例......
  • 力扣579(MySQL)-查询员工的累积薪水(困难)
    题目:Employee表保存了一年内的薪水信息。请你编写SQL语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算)。结果请按......
  • 力扣88.合并两个有序数组【顺序表】
    ......
  • 力扣 93. 复原 IP 地址
    93.复原IP地址有效IP地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1......
  • 力扣 131. 分割回文串
    131.分割回文串给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。......