暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

单挑力扣(LeetCode)SQL笔试题:619. 只出现一次的最大数字(难度:简单)

跟强哥学SQL 2023-02-10
322
题目:619. 只出现一次的最大数字
(通过次数22,327 | 提交次数47,765,通过率46.74%)
    MyNumbers 表:
    +-------------+------+
    | Column Name | Type |
    +-------------+------+
    | num | int |
    +-------------+------+
    这张表没有主键。可能包含重复数字。
    这张表的每一行都含有一个整数。


    单一数字 是在 MyNumbers 表中只出现一次的数字。
    请你编写一个 SQL 查询来报告最大的 单一数字 。如果不存在 单一数字 ,查询需报告 null 。


    查询结果如下例所示。
    示例 1:
    输入:
    MyNumbers 表:
    +-----+
    | num |
    +-----+
    | 8 |
    | 8 |
    | 3 |
    | 3 |
    | 1 |
    | 4 |
    | 5 |
    | 6 |
    +-----+
    输出:
    +-----+
    | num |
    +-----+
    | 6 |
    +-----+
    解释:单一数字有 1、4、5 和 6 。
    6 是最大的单一数字,返回 6 。
    示例 2:
    输入:
    MyNumbers table:
    +-----+
    | num |
    +-----+
    | 8 |
    | 8 |
    | 7 |
    | 7 |
    | 3 |
    | 3 |
    | 3 |
    +-----+
    输出:
    +------+
    | num |
    +------+
    | null |
    +------+
    解释:输入的表中不存在单一数字,所以返回 null 。


    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/biggest-single-number

      #测试数据
      Create table If Not Exists MyNumbers (num int);


      insert into MyNumbers (num) values ('8');
      insert into MyNumbers (num) values ('8');
      insert into MyNumbers (num) values ('3');
      insert into MyNumbers (num) values ('3');
      insert into MyNumbers (num) values ('1');
      insert into MyNumbers (num) values ('4');
      insert into MyNumbers (num) values ('5');
      insert into MyNumbers (numvalues ('6');
      解题思路:
      MyNumbers表保存了所有的数字。
      题目要求:返回最大的单一数字。
      单一数字,也就是说只出现了一次的数字。
      那么,我们可以先从表中计算出每个数字出现的次数,然后过滤出只出现一次的数字。
      最后,取出单一数字的最大值即可。
      这里涉及到SQL中SELECT各子句的执行顺序,因为HAVING子句在GROUP BY子句之后执行,因此可以在同一句SQL中完成汇总统计数字出现的次数并筛选出只出现一次的数字。
      而MAX操作在HAVING子句之前执行,所以无法实现HAVING子句筛选数据后再取出最大值。一般的处理方法是,在外层包一层子查询,实现MAX操作。
      参考SQL:
        select
        max(num) num
        from (
        select
        num
        from MyNumbers
        group by num
        having count(1) = 1
        )a;

        单挑力扣(LeetCode)SQL笔试题:597. 好友申请 I:总体通过率(难度:简单)
        单挑力扣(LeetCode)SQL笔试题:607. 销售员(难度:简单)
        单挑力扣(LeetCode)SQL笔试题:610. 判断三角形(难度:简单)


        笔试题合集免费领取方法


        方法一:关注公众号【跟强哥学SQL】,回复关键字【力扣】获取链接。

        方法二:访问【SQL网】:https://sql.wang/sql-leetcode/sql-exercise



        文章转载自跟强哥学SQL,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论