본문 바로가기

코딩일기

SQL 코드카타 104 - Biggest Single Number

https://leetcode.com/problems/biggest-single-number/description/

 

Column Name Type
num int

 

MyNumbers 테이블:

  • num (int): 임의의 정수

해당 테이블에서 가장 큰 단일숫자(한번만 나타나는 숫자)를 출력하세요.

 

select
    num,
    count(num)
from MyNumbers
group by num

 

먼저 각 숫자들을 그룹화한 후, 몇번이나 나타나는지 갯수를 센다.

 

select
    M.num
from MyNumbers M join
(
select
    num,
    count(num) count_num
from MyNumbers
group by num
) C on M.num = C.num
where count_num = 1

 

위의 쿼리를 서브쿼리로 만들고 MyNumbers와 join한다. 그리고 c.count_num가 1인 목록(단일숫자)만 필터링한다.

select
    M.num
from MyNumbers M join
(
select
    num,
    count(num) count_num
from MyNumbers
group by num
) C on M.num = C.num
where c.count_num = 1
order by M.num DESC
limit 1
M.num를 내림차순으로 정렬하고 limit 1로 가장 큰 숫자만 출력하도록 한다.

 

select ifnull(
(select
    M.num
from MyNumbers M join
(
select
    num,
    count(num) count_num
from MyNumbers
group by num
) C on M.num = C.num
where c.count_num = 1
order by M.num DESC
limit 1), NUll) num

 

마지막으로 ifnull로 해당 구문으로 출력한 값이 없을 경우 NULL을 출력하도록 한다.

 

완료