返回介绍

solution / 0600-0699 / 0619.Biggest Single Number / README

发布于 2024-06-17 01:03:36 字数 2181 浏览 0 评论 0 收藏 0

619. 只出现一次的最大数字

English Version

题目描述

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;

方法二:分组 + CASE 表达式

与方法一类似,我们可以先将 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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文