comments | difficulty | edit_url | tags | |
---|---|---|---|---|
true |
简单 |
|
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
进行分组统计,找出只出现一次的数字,然后使用子查询找出最大的数字即可。
# Write your MySQL query statement below
SELECT MAX(num) AS num
FROM
(
SELECT num
FROM MyNumbers
GROUP BY 1
HAVING COUNT(1) = 1
) AS t;
与方法一类似,我们可以先将 MyNumbers
表按照 num
进行分组统计,然后使用 CASE
表达式,找出只出现一次的数字,然后按数字降序排序,取第一个即可。
# Write your MySQL query statement below
SELECT
CASE
WHEN COUNT(1) = 1 THEN num
ELSE NULL
END AS num
FROM MyNumbers
GROUP BY num
ORDER BY 1 DESC
LIMIT 1;