SQL-每日一题【619.只出现一次的最大数字】

文章描述了一个SQL查询问题,目标是找到表MyNumbers中只出现一次的最大数字。若不存在这样的数字,则返回null。解决方案涉及对num列分组,筛选出计数为1的数字,然后按降序排序并使用LIMIT1获取最大值,同时处理了当无结果时返回null的情况。
摘要由CSDN通过智能技术生成

题目

MyNumbers 表:

单一数字 是在 MyNumbers 表中只出现一次的数字。

请你编写一个 SQL 查询来报告最大的 单一数字 。如果不存在 单一数字 ,查询需报告 null 。

查询结果如下例所示。

示例 1:

 

示例 2:

 

 

解题思路

1.题目要求我们查找MyNumbers 表中只出现一次的最大的数字,题目相对来说比较简单,但是存在一个小坑!

2.首先我们对 num 进行分组并输出每一组的元素个数,筛选出元素个数等于一的num,这个筛选出的num就是我们的唯一数字,再对它进行降序排序后返回第一页的第一个元素,我们就可以得到只出现一次的最大的数字

3.到这里还没有结束!因为我们有可能查不到这个数字,也就是说表中不存在单一数字,但是我们又进行了条件限制(limit 1),那么行被删去就什么都不会返回,此时运行就会出错。这时我们只需要直接在内层select上套一层select,就可以自动在找不到的时候返回null。

代码实现

select 
(select num from MyNumbers 
group by num having count(num)=1 order by num desc limit 1) as num

运行结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值