619. 只出现一次的最大数字
题目描述
MyNumbers
表:
+-------------+------+ | Column Name | Type | +-------------+------+ | num | int | +-------------+------+ 该表可能包含重复项(换句话说,在SQL中,该表没有主键)。 这张表的每一行都含有一个整数。
单一数字 是在 MyNumbers
表中只出现一次的数字。
找出最大的 单一数字 。如果不存在 单一数字 ,则返回 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 。
解法
方法一:分组 + 子查询
我们可以先将 MyNumbers
表按照 num
进行分组统计,找出只出现一次的数字,然后使用子查询找出最大的数字即可。
1 2 3 4 5 6 7 8 9 |
|
方法二:分组 + CASE
表达式
与方法一类似,我们可以先将 MyNumbers
表按照 num
进行分组统计,然后使用 CASE
表达式,找出只出现一次的数字,然后按数字降序排序,取第一个即可。
1 2 3 4 5 6 7 8 9 10 |
|